编写方法,深度克隆一个对象

【要求】:编写方法,深度克隆一个对象

【实现1】:

Object.prototype.clone = function(){
//原型指向保持一致
var newobj = Object.create(Object.getPrototypeOf(this));
//自身属性保持一样
var propNames = Object.getOwnPropertyNames(this);
propNames.forEach(function(item){
//保持每个属性的特性也一样
var des = Object.getOwnPropertyDescriptor(this,item);
Object.defineProperty(newobj,item,des);
},this);
return newobj;
}


【实现2】:

//深度克隆一个对象
Object.prototype.clone=function(){
var obj2=this.constructor===Array? []:{};

if(typeof this !== "object") {
return;
} else {
for(var i in this) {
if(typeof this[i]==="object") {
obj2[i] = this[i].clone();
} else {
obj2[i] = this[i];
}
}
}

return obj2;
}

出处:忘了。。。

posted on 2016-12-08 09:49  Ruth92  阅读(175)  评论(0)    收藏  举报

导航