2012-02-04 31 views
0

这是一个克隆一个对象递归克隆函数吗?这是一个好的克隆功能吗?

function clone(o) 
{ 
    function CloneObject(inObj) 
    { 
     for (i in inObj) 
     { 
      if(typeof inObj[i] == 'object') 
       this[i] = clone(inObj[i]); 
      else 
       this[i] = inObj[i]; 
     } 
    } 

    return new CloneObject(o); 
} 

此外,我发现这不适用于数组。我如何克隆一个数组?

+0

该主题有很多线程:http://stackoverflow.com/search?q=[javascript]+clone+object – 2012-02-04 03:25:06

回答

1

它肯定不会完美地克隆对象—克隆不会有原始的原型,并且它们会有不同的构造函数,并且如果原始函数具有任何不可迭代的属性,那么这将不会复制它们—但你问它是否“好”,答案很可能是“是”:如果它所做的只是你所需要的,那就绝对没问题。

至于克隆阵列—你可以检查是否inObj.constructor == Array

+0

其实,我在这里找到了一个更好的解决方案:http://my.opera.com /GreyWyvern/blog/show.dml/1725165 – LordZardeck 2012-02-04 03:20:46