4

只是一个(希望如此)快速的问题,以澄清 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 的引用?我没有创建对象的副本?所以,如果我要说:

foo[0].price = 50;

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

提前谢谢了!我已经看到一些堆栈溢出线程在更广泛的帖子中提到了这个问题,但我只是想把它全部放在那里以确保!此致

4

2 回答 2

2

你是对的。但是做起来看看会发生什么是非常容易的。

http://jsfiddle.net/67haQ/

您显然似乎已经知道它是如何工作的,稍微玩弄确认似乎比 SO 问题更容易。

只是在说'

于 2012-06-20T21:30:44.263 回答
2

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

于 2012-06-20T21:23:28.017 回答