javascript cloneNode和属性

时间:2010-11-04 08:07:33

标签: javascript properties clonenode

是否有一种“超级”深度克隆节点的快速方法,包括其属性? (和方法,我猜)

我有这样的事情:

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

1 个答案:

答案 0 :(得分:2)

保存大量属性的最佳方法可能是创建一个属性对象,您可以在其中存储所有属性,例如。

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