首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript cloneNode和属性

javascript cloneNode和属性
EN

Stack Overflow用户
提问于 2010-11-04 16:07:33
回答 1查看 1.4K关注 0票数 0

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

我得到了类似这样的东西:

代码语言:javascript
复制
var theSource = document.getElementById("someDiv")
theSource.dictator = "stalin";

var theClone = theSource.cloneNode(true);

alert(theClone.dictator); 

新克隆的对象没有dictator属性。现在,假设我已经将一千个属性附加到theSource --我如何(非显式地)将它们传输/复制到克隆?

//编辑

@Fabrizio

您的hasOwnProperty答案不能正常工作,因此我对其进行了调整。这就是我正在寻找的解决方案:

代码语言:javascript
复制
temp = obj.cloneNode(true);

for(p in obj) {
  if(obj.hasOwnProperty(p)) { eval("temp."+p+"=obj."+p); }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-04 16:48:20

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

代码语言:javascript
复制
thesource.myproperties = {}
thesource.myproperties.dictator1 = "stalin"; 
thesource.myproperties.dictator2 = "ceasescu"; 
thesource.myproperties.dictator3 = "Berlusconi";
...

然后,您只需复制一个属性

代码语言:javascript
复制
theclone.myproperties = thesource.myproperties

否则,对已存储的所有属性执行for循环

代码语言:javascript
复制
for (p in thesource) {
  if (thesource.hasOwnProperty(p)) {
    theclone.p = thesource.p;
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4094811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档