js深度克隆对象

本文详细介绍使用JavaScript实现深度克隆对象的方法,包括构造相同对象并递归复制属性,确保对象完全独立,避免引用共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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; 
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值