我剛剛注意到克隆和推送項目有點奇怪。這裏的例子: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