我刚刚注意到克隆和推送项目有些奇怪。这是示例:
let a = { foo: [1,2] };
let b = Object.assign({}, a) // cloning object and getting new reference
a === b // gives false which is what I want
现在我在对象 a 上执行 push
:
a.foo.push(3)
现在 a.foo
是 [1,2,3]
但 b.foo
也是 [1,2, 3]
但如果我这样做
a.foo = a.foo.concat(4)
a.foo
是 [1,2,3,4]
而 b.foo
是 [1,2, 3]
问题是:为什么会这样?
最佳答案
a.foo 和 b.foo 指向相同的引用,但是 .concat() 返回一个新数组,因此它们现在指向 2 个不同的数组引用
关于Javascript 数组推送更新也克隆了对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44647197/