有很多关于“克隆”JavaScript对象的hubub。但是,据我所知,这很简单:
function clone(obj) {
return obj;
}
现在我意识到DOM对象没有以这种方式克隆,但据我所知,DOM是浏览器的一部分,而不是JavaScript的一部分。
哪些对象需要深度克隆?为什么?
答案 0 :(得分:4)
只会将引用返回到完全相同的对象。它没有克隆任何东西。
x = {},
c=function(o){return o},
y = c(x),
result = (x === y)
结果为true
答案 1 :(得分:1)
这在某些方面是通过参考传递/通过价值辩论进行分配。对于任何由于多种原因而不是原始语言的东西,通过引用往往是大多数语言的默认值,其中可能主要包括:
1)如果每个赋值/传递给函数创建一个深层副本,你可能会流失大量内存。
2)当你尝试改变事物的状态时会有额外的乐趣......如果this.x = 5
已被绑定,则不再有this.x
。如果我们半幸运的话,可能会像this = this.clone({x: 5})
那样。
有关更多背景信息,请查看以下两个链接:
http://oranlooney.com/functional-javascript/
http://oranlooney.com/deep-copy-javascript/
我认为真正的问题应该是 - 为什么没有一个方便的Object
方法来做深拷贝?