编写方法,深度克隆一个对象
【要求】:编写方法,深度克隆一个对象
【实现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;
}
出处:忘了。。。
Scoop It and Enjoy the Ride!