Javascript对象多个引用

时间:2012-06-20 21:22:15

标签: javascript arrays object

只是一个(希望)快速的问题,以澄清Javascript处理对象的方式。我不习惯JS所以它有点意外,这就是为什么我要仔细检查!

说我有一个对象:

function food(price) {
  this.price = price || 100; 
}

var myFood = new food(100);

然后将此对象存储在两个数组中:

var foo = [];
var bar = [];
foo.push(myFood);
bar.push(myFood);

我是否正确地认为我在这里所做的就是存储对myFood的参考?我不是在创建对象的COPY?所以,如果我这样做,请说:

foo[0].price = 50;

bar [0] .price ALSO == 50,因为它存储了对myFood的引用,并且它的myFood实际上已经影响了价格,而不是foo或bar?

非常感谢提前!我已经看到一些堆栈溢出线程提到这个问题作为更广泛的帖子的一部分,但我只是想把它放在那里以确保! 最好的问候

2 个答案:

答案 0 :(得分:2)

是的,javascript只会推送引用而不是对象的副本。

答案 1 :(得分:2)

你是对的。但这样做非常容易,看看会发生什么。

http://jsfiddle.net/67haQ/

你似乎已经清楚地知道它是如何运作的,一点点玩耍确认似乎比SO问题更容易。

只是说'