也许我的做法是错误的,如果是这样,请告诉我!
无论如何,假设我有一个代表一些不错数据的数组。
var orignal = ['a', 'b'];
var copy = orignal;
orignal.push('c');
console.log(original === copy); // true
我有点喜欢这个功能,其中对象仍然是相同的。当然,如果我设置original = ['c']
,情况就不再是这样了。是否有任何模式可以让我在数组上执行更多操作而不破坏链接?
最佳答案
赋值是会破坏链接的一件事,因为它是对引用的操作,而不是对数组的操作。它使变量引用其他地方。您所做的任何其他操作都将通过原始
和副本
可见:
copy.length = 5; // visible through original
copy[3] = 4; // visible through original
copy.pop(); // visible through original
如果您认为希望通过赋值来保留链接,那么您可能应该执行一些类似但不同的操作,例如用另一个数组的内容填充一个数组。
顺便说一句,调用变量copy
可能不是一个好主意,因为它不是副本。这是原创的,就像原创
一样。
关于javascript - 更改数组而不链接引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23530295/