Js 克隆

1.浅表克隆

  调用concate() 或者slice() 方法,可以创建数组的浅表副本,在浅表副本中,如果原始数组的元素是复杂数据类型,则元素值指向对象的引用而非对象本身,

  与原始数组一样,浅表副本的元素值也是指向对象引用,对对象所做的任何更改都会在两个数组中反映出来。

2.深度克隆

 深度克隆是相对于浅表而言的,在克隆的深度副本中,不断复制索引,还将复制原始数组中的所有对象,从而使新数组和原始数组指向不同对象。

 

实现的一个方法:

function cloneArray(_arry ,deep){
var newArray=[];
if(deep){
for(var i in _arry){
var prop =_arry[i];
if(typeof prop ==‘object‘){
if(prop instanceof Array){
newArray[i]=[];
for(var j=0;j<prop.length;j++){
if(typeof prop[j]!=‘object‘){
newArray[i].push(prop[j]);
}
else{
newArray[i].push(cloneArray(prop[j]),true);
}
}
}
else{
newArray[i]=cloneArray(prop,true);
}
}
else{
newArray[i]=prop;
}
}
}
else{
newArray=_arry.concat();
}
return newArray;
}

测试方法:

var p ={sex:1,ages:32};
var a =["tomn",p];
var newarray =cloneArray(a,false);
alert(newarray[1].sex);
p.sex=2;
alert(newarray[1].sex);

Js 克隆,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。