js深さクローン

1302 ワード

jsは一般的に2つの異なるデータタイプの値があります.
基本タイプ(undefined、Null、bollan、String、Numberを含む)は、値によって伝えられます.
参照の種類(配列、オブジェクトを含む)は、アドレスによって伝達され、参照の種類は、値が伝達されるときにメモリ内のアドレスである.例えば
var a={"a":1};

var b=a;

b["b"]=2;

console.log(a);//{"a":1,"b":2};
bの値を変更すると、a変数の値も変化します.
クローンまたはコピーは2種類に分けられます.
浅いクローン:基本タイプは値伝達で、オブジェクトは依然として参照伝達である.
深さクローン:すべての要素や属性が完全にクローンされ、元の参照の種類から完全に独立しています.つまり、オブジェクトの属性が後から変更される場合、元のオブジェクトは変更されません.
Object.prototype.clone = function(){ 
/*        */ 
var cloneObj; 
/*               new        STRING NUMBER        NEW                     */ 
if(this.constructor == Object){ 
cloneObj = new this.constructor(); 
}else{ 
cloneObj = new this.constructor(this.valueOf()); 
} /*               ,   */ 
for(var i in this){ 
if(cloneObj[i] != this[i]){ 
if(typeof (this[i]) == "object"){ 
cloneObj[i] = this[i].clone(); 
}else{ 
cloneObj[i] = this[i]; 
} 
} 
} 
/*           ,   ,  toString valueof         FOR IN    CLONEOBJ      ,      */
cloneObj.toString = this.toString; 
conleObj.valueOf = this.valueOf; 
return cloneObj 
}