[JavaScript]浅いレプリケーション、深いレプリケーション
2142 ワード
深さ放射と浅い放射の違いは基本型と参照型放射の違いにある.
変数をコピーするときは、[基本シェイプもポップアップ値を参照](Reference Basic Shapeもフライアウト値を参照)が正しいが、参照シェイプとの違いは、[オブジェクトの変数(アウトライン)領域](Object Variable(Outline)Area)が独立して存在することである.
num 2=15を再割り当てすると、num 2は新しいデータ「15」の高騰を見ることができます.
出現値をコピーするのは1回のみであり、独立したメモリに値(ex'15)自体を割り当てると考えられる.
*写真ソースコアJavaScript
obj2.c=20に変更しても同じ株価が見られるので、obj 1のc値も20です.
したがって、伝達されたオブジェクトを変更しても、元のオブジェクトを変更しない必要があるため、可変オブジェクトが必要になります.
Object.空のオブジェクトをassign(作成するオブジェクト、コピーするオブジェクト)メソッドの最初の引数として、次に割り当てるオブジェクトを2番目の引数として使用します.
オブジェクトをJSON構文で表す文字列に変換し、JSONオブジェクトに変換します.
HttpRequestから受信したデータを保存したオブジェクトをコピーすると、等温線の低保しか処理しません.
変数をコピーするときは、[基本シェイプもポップアップ値を参照](Reference Basic Shapeもフライアウト値を参照)が正しいが、参照シェイプとの違いは、[オブジェクトの変数(アウトライン)領域](Object Variable(Outline)Area)が独立して存在することである.
ふかほうしゃ
let num1 = 10
let num2 = num1
num2=15
console.log(num1) // 10
console.log(num2) // 15
let num 2=num 1ではnum 2もnum 1と同じデータ「10」を持つ主な切り上げを見ることができる.num 2=15を再割り当てすると、num 2は新しいデータ「15」の高騰を見ることができます.
出現値をコピーするのは1回のみであり、独立したメモリに値(ex'15)自体を割り当てると考えられる.
浅い放射
let a = 10;
let b = a;
let obj1 = { c: 10, d:'ddd}
let obj2 = obj1
b=15;
obj2.c = 20;
データの参照値(メモリアドレス)を渡し、最終的にデータを生成するのではなく、データを共有します.*写真ソースコアJavaScript
obj2.c=20に変更しても同じ株価が見られるので、obj 1のc値も20です.
したがって、伝達されたオブジェクトを変更しても、元のオブジェクトを変更しない必要があるため、可変オブジェクトが必要になります.
」参考データを深くコピー!
1 . object.assign( )
Object.空のオブジェクトをassign(作成するオブジェクト、コピーするオブジェクト)メソッドの最初の引数として、次に割り当てるオブジェクトを2番目の引数として使用します.
const obj = { a: 1 };
const newObj = Object.assign({}, obj);
newObj.a = 2;
console.log(obj); // { a: 1 }
console.log(obj === newObj); // false
2.展開演算子
const obj = {
a: 1,
b: 2,
};
const newObj = { ...obj };
newObj.b = 3;
console.log(obj); // { a: 1, b: 2 }
console.log(newObj); // {a:1, b:3 }
ただし、これらの2つの方法では、ネストされたオブジェクトに深度コピーは行われません。
const obj = {
a: 1,
b: {
c: 2,
},
};
const newObj = { ...obj };
newObj.b.c = 3;
console.log(obj); // { a: 1, b: { c: 3 } }
console.log(obj.b.c === newObj.b.c); // true
3.JSONによる簡単な深度コピー
オブジェクトをJSON構文で表す文字列に変換し、JSONオブジェクトに変換します.
HttpRequestから受信したデータを保存したオブジェクトをコピーすると、等温線の低保しか処理しません.
const obj = {
a: 1,
b: {
c: 2,
},
};
const newObj = JSON.parse(JSON.stringify(obj));
newObj.b.c = 3;
console.log(obj); // { a: 1, b: { c: 2 } }
console.log(obj.b.c === newObj.b.c); // false
Reference
この問題について([JavaScript]浅いレプリケーション、深いレプリケーション), 我々は、より多くの情報をここで見つけました https://velog.io/@vlrtpfdkxm/JavaScript-얕은복사-깊은복사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol