Javascript对象多个引用

Javascript对象多个引用,javascript,arrays,object,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); 我认为我

这只是一个(希望如此)快速的问题,可以澄清Javascript是如何处理对象的。我不习惯JS,所以它让我有点惊讶,这就是为什么我想再次检查

假设我有一个目标:

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

var myFood = new food(100);
然后将此对象存储在两个数组中:

var foo = [];
var bar = [];
foo.push(myFood);
bar.push(myFood);
我认为我在这里所做的只是存储对我的食物的引用,这对吗?我没有创建对象的副本?所以如果我说:

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

非常感谢!我已经看到一些堆栈溢出线程将此问题作为一篇更广泛的文章的一部分提到,但我只是想把它全部放在那里以确保!
致以最诚挚的问候是的,javascript只会推送一个引用,而不是对象的副本。

你是对的。但要做到这一点,看看会发生什么,是非常容易的

很明显,你似乎已经知道它是如何工作的了,稍微玩弄一下以获得确认似乎比问一个简单的问题更容易


只是说,“

为什么不运行代码来查看?可能是@Esailija的重复-谢谢您的评论!在我意识到这一点之前,我就这么做了,但我想我一定错过了什么,在某个地方,比简单明了的事实更复杂的东西嗨,特里尼,这很公平,我只是觉得我错过了一些东西!再一次抱歉。我只是想补充一点,我觉得这完全有用,并且迅速而简洁地回答了我这次访问的原因。事实上,他所说的新内容意味着这个问题很容易理解,同时对于不太确定如何描述他所寻找的东西的人来说也很容易找到。(我搜索了“对对象的多个引用”=)太棒了!非常感谢您的快速回复-感谢您,我刚刚看到我和javascript之间的美好未来展现在我眼前D只要条件允许,我就接受。再次感谢!嗨,亚历克斯,谢谢你这么说-我开始觉得有点傻了,就像你说的!我以后一定要记住这一点。