js には一般に 2 つの異なるデータ型の値があります:
基本型 (未定義、Null、ブール、文字列、数値を含む)、値によって渡されます。
参照型 (配列、オブジェクトを含む)、アドレス、参照によって渡されます。 type は値で渡される場合のメモリ内のアドレスです。
クローンまたはコピーは 2 つのタイプに分類されます。
浅いクローン作成: 基本タイプは値によって渡され、オブジェクトは依然として参照によって渡されます。
ディープ クローン作成: すべての要素または属性が完全にクローンされ、元の参照タイプから完全に独立します。つまり、オブジェクトの属性が後で変更されても、元のオブジェクトは変更されません。
function cloneObject(obj){
var o = obj.constructor === 配列 ? [] : {};
for(var i in obj){
if(obj.hasOwnProperty(i)){
o[i] = typeof obj[i ] === "オブジェクト" ? cloneObject(obj[i]) : obj[i]>}
}
}
別: 単純な配列であり、要素に参照型の値がない場合は、array.concat(); または array.slice(0); を使用して配列を深くコピーできます。効率的。配列 concat() とスライス() は新しい配列を生成しますが、元の配列は影響を受けません。ただし、コピーされた配列の要素に参照型の値が存在しないことを確認する必要があることに注意してください。
これも、非常にシンプルで実用的なディープ クローン作成方法です。
var s = JSON.stringify( obj );
var o = JSON.parse( s );