[JavaScript]浅いレプリケーション、深いレプリケーション


🐭 浅い放射


浅いレプリケーションは、参照(アドレス)値のレプリケーションを表します.
const obj = { value: 1 }
const newObj = obj;

newObj.value = 2;

console.log(obj.value);	// return 2
console.log(obj === newObj)	// return true
objオブジェクトは、参照割り当てと呼ばれる新しいnewObjectオブジェクトに割り当てられています.コピー後、newObjectオブジェクトのvalue値を変更し、既存のobjを変更します.value値も一緒に変更されていることがわかります.2つのオブジェクトを比較してもtrueが得られます.このようにJavaScriptの参照タイプは浅いコピーであると考えられ,これは直接データを生成するのではなく,データの参照値(メモリアドレス)を伝達し,最終的に1つのデータを共有することを意味する.

🐭 ふかほうしゃ


深度コピーは、値自体を表すコピーです.
let a = 1;
let b = a;

b = 2;

console.log(a);	// return 1
console.log(b); // return 2
console.log(a === b);	// return false
変数aを新しいbに割り当て、bの値を変更しても既存のaの値は変更されません.2つの値を比較するとfalseが出力され、互いの値は個別に存在します.これによりjavascriptの元のタイプが深さレプリケーションになり、独立したメモリに値を割り当てることで作成されたと見なすことができます.