使用Immutable.js,通过将对象分配给变量来简单地克隆一个新对象

7
我正在查看Immutable.js的文档,具体来说是以下内容:
var map1 = Immutable.Map({a:1, b:2, c:3});
var clone = map1;

但我不清楚,为什么简单地将map1分配给clone会创建一个克隆而不是一个引用?

更新:文档说明:“如果一个对象是不可变的,那么可以通过将其分配给另一个引用来“复制”它,而不是复制整个对象。因为引用比对象本身小得多,所以这样做可以节省内存,并为依赖副本(如撤消堆栈)的程序提供执行速度上的潜在提升。”

我在jsbin中进行了测试,发现clone和map1是===的。我认为文档中对“clone”一词的使用有些误导。


map1 不是你传入的对象的克隆吗? - huysentruitw
1个回答

7

由于Immutable.Map是不可变的,克隆的概念已经过时了。他们的观点是,你不必担心是否克隆,这并不重要。

文档确实令人困惑,但它确实是一个参考而不是克隆。无论如何,克隆的效果都是一样的。


我不确定这是否仍然是他们文档的一部分。无论如何,他们甚至将此放在文档中,只会使我们所有人已经知道为真实的 JavaScript 的按引用传递特性变得更加晦涩难懂。 - ThinkingInBits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接