在网上找到的clone方法代码:
方法一:定义一个clone方法来实现。
方法二:通过object原型扩展实现。
方法一:定义一个clone方法来实现。
function clone(myObj){
if(typeof(myObj) != 'object')
return myObj;
if(myObj == null)
return myObj;
var myNewObj = new Object();
for(var i in myObj)
myNewObj[i] = clone(myObj[i]);
return myNewObj;
}
方法二:通过object原型扩展实现。
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;
}
本文介绍了两种在JavaScript中实现对象深拷贝的方法。一种是通过递归定义clone方法,另一种则是利用Object.prototype进行扩展实现。这两种方法都能有效避免原始对象被修改的问题。
4817

被折叠的 条评论
为什么被折叠?



