Javascript引用对象

时间:2014-07-16 23:50:33

标签: javascript

我不确定如何解释这个问题,所以我会用代码来说明。

var bob = {
    "1": ["a", "b"]
}

var jim = bob[1]

jim.shift()

print(bob[1])

使用d8运行它,我得到[b]的输出。

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

2 个答案:

答案 0 :(得分:2)

复制bob [1]

var bob = {
    "1": ["a", "b"]
}

var jim = bob[1].slice(0)

jim.shift()

print(bob[1])

答案 1 :(得分:1)

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