有没有一种快速“超级”深度克隆节点的方法,包括其属性? (方法,我猜)
我有这样的事情:
var theSource = document.getElementById("someDiv")
theSource.dictator = "stalin";
var theClone = theSource.cloneNode(true);
alert(theClone.dictator);
新克隆的对象没有
dictator
属性。现在,说我在theSource
上附加了上千个属性-如何(非明确地)将它们转移/复制到克隆中?//编辑
@Fabrizio
您的
hasOwnProperty
答案无法正常工作,因此我进行了调整。这是我一直在寻找的解决方案:temp = obj.cloneNode(true);
for(p in obj) {
if(obj.hasOwnProperty(p)) { eval("temp."+p+"=obj."+p); }
}
最佳答案
保存许多属性的最好方法可能是创建一个属性对象,在其中可以存储所有属性,例如
thesource.myproperties = {}
thesource.myproperties.dictator1 = "stalin";
thesource.myproperties.dictator2 = "ceasescu";
thesource.myproperties.dictator3 = "Berlusconi";
...
那么您只需要复制一个属性
theclone.myproperties = thesource.myproperties
否则,对已存储的所有属性执行
for
循环for (p in thesource) {
if (thesource.hasOwnProperty(p)) {
theclone.p = thesource.p;
}
}