Javascript对对象的引用

Javascript references to object

本文关键字:引用 对象 Javascript      更新时间:2023-09-26

我不知道如何解释这个问题,所以我将用代码来说明。

var bob = {
    "1": ["a", "b"]
}
var jim = bob[1]
jim.shift()
print(bob[1])

与d8一起运行此操作,我得到[b]的输出。

注意当我修改jim时,bob(我从jim引用的对象)是如何被改变的。我想有行为修改jimbob没有任何作用。也就是说,即使在shift()之后,我希望bob[1]仍然是[a,b]而不是[b]。我确信这是JS中一个文档完备的部分,但我不确定如何搜索它。谢谢你的帮助。

复制bob[1]

var bob = {
    "1": ["a", "b"]
}
var jim = bob[1].slice(0)
jim.shift()
print(bob[1])

JavaScript中的对象值是引用,而不是完整的对象值。当您将bob[1]赋值给jim时,jimbob[1]都引用同一个对象(数组)。通过一个引用改变数组不会影响另一个引用;它们都指向同一个(改变了的)数组