我刚刚注意到克隆和推送项目有点奇怪。这里的例子:Javascript阵列推送更新也克隆对象
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
现在我对对象做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'是'[1,2,3,4]'和'b.foo'是'[1,2,3]'是'concat()'返回一个全新的数组这将取代'a.foo' – Miqe