...每个对象还引用了同一数组中的其他对象吗?
当我第一次想到这个问题时
var clonedNodesArray = nodesArray.clone()
将存在并搜索有关如何在javascript中克隆对象的信息。我确实在StackOverflow上发现了一个问题(由相同的@JohnResig回答),他指出,使用jQuery,您可以做到
var clonedNodesArray = jQuery.extend({}, nodesArray);
克隆对象。我尝试了一下,但这只复制了数组中对象的引用。所以如果我
nodesArray[0].value = "red"
clonedNodesArray[0].value = "green"
nodeArray [0]和clonedNodesArray [0]的值都将变为“绿色”。然后我尝试
var clonedNodesArray = jQuery.extend(true, {}, nodesArray);
它深深复制了一个对象,但是我分别从Firebug和Opera Dragonfly 得到了“ 太多的递归 ”和“ 控制堆栈溢出 ”消息。
你会怎么做?这是什至不应该做的事情吗?有没有一种可重用的方式来做到这一点在Javascript中?
If you want to implement deep clone use JSON.parse(JSON.stringify(your {} or []))