コアJavaScript(参照によるオブジェクトのコピー)
参照によるオブジェクトのコピー
オブジェクトと元のタイプの根本的な違いの1つは、オブジェクトの「参照によって格納およびコピー」です.
オブジェクトの動作は、オブジェクトを変数に格納するのではなく、オブジェクトのメモリアドレスオブジェクトのリファレンス値を格納します.
参照比較
オブジェクトを比較する場合、等価演算子==と一致演算子==の動作は同じです.
オブジェクトは、obj 1>obj 2などの元の値やobj=5などの値と比較して元のタイプに変換されます.
コピー、マージ、およびオブジェクト。assing
コピーが必要な場合は、新しいオブジェクトを作成し、既存のオブジェクト上のProperty間を移動して元のレベルにコピーするだけです.let user = {
name: "John",
age: 30
}
let clone = {};
for (let key in user) {
clone[key] = user[key]
}
objcet.assingの使用方法Object.assing(dest, [src1, src2, src3...])
let user = {
name: "John",
age: 30
}
let clone = {};
for (let key in user) {
clone[key] = user[key]
}
Object.assing(dest, [src1, src2, src3...])
assingメソッドを使用して複数のオブジェクトを1つにマージ
let user = {name: John"};
let permissions1 = {canView: true};
let permissions2 = {canEdit: true};
Object.assign(user, permissions1, permission2);
//now user = {name: 'John', canView: true, canEdit: true}
Object.assignは、重複することなくレプリケーションオブジェクトを簡単にします.let user = {
name = "John",
age = 30
};
let clone = Object.assing({}, users);
すべてのプロファイルが空の配列にコピーされ、変数に割り当てられます.ネストされたオブジェクトのコピー
Propertyが他のオブジェクトの参照値である場合.
let user = {
name: 'john',
size: {
height: 182,
width: 50
}
}
clone.sizes = user.構成をsizeにコピーするだけでオブジェクトをコピーすることはできませんuser.sizeはオブジェクトなので参照値をコピー
この問題を解決するには、ユーザー[キー]の各値を確認し、繰り返し文を使用する必要があります(値がオブジェクトの場合、オブジェクトの構造をコピーすることもできます).
深くコピー
let user = {
name: "John",
sizes: {
height: 182,
width: 50
}
};
let clone = Object.assign({}, user);
alert(user.sizes === clone.sizes);
user.sizes.width++ // 한객체에서 프로퍼티를 변경
alert(clone.sizes.width);
Reference
この問題について(コアJavaScript(参照によるオブジェクトのコピー)), 我々は、より多くの情報をここで見つけました https://velog.io/@tastestar/코어-자바스크립트-참조에-의한-객체-복사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol