js深度克隆对象
用js实现对象克隆最关键的两点就是:var objClone = new this.constructor();和objClone[key] = this[key].Clone();。一个实现相同对象创建,一个实现深度克隆。
Object.prototype.Clone = function(){
var objClone;
if (this.constructor == Object){
objClone = new this.constructor();
}else{
objClone = new this.constructor(this.valueOf());
}
for(var key in this){
if ( objClone[key] != this[key] ){
if ( typeof(this[key]) == ‘object’ ){
objClone[key] = this[key].Clone();
}else{
objClone[key] = this[key];
}
}
}
objClone.toString = this.toString;
objClone.valueOf = this.valueOf;
return objClone;
}
不用原型方式实现,万一哪天浏览器厂商一更新可能就会有原生的Clone方法了,只写个方法
function clone(obj){
var objClone;
if (obj.constructor == Object){
objClone = new obj.constructor();
}else{
objClone = new obj.constructor(obj.valueOf());
}
for(var key in obj){
if ( objClone[key] != obj[key] ){
if ( typeof(obj[key]) == ‘object’ ){
objClone[key] = clone(obj[key]);
}else{
objClone[key] = obj[key];
}
}
}
objClone.toString = obj.toString;
objClone.valueOf = obj.valueOf;
return objClone;
}