引用javascript对象

时间:2012-11-21 05:54:07

标签: javascript object

这对我来说总是有点混乱,我的编程术语不足以谷歌。甚至不确定标题是否有意义。 例如,如果我有一个像这样的对象数组......

var someObjects = [{type: 'apple'}, {type: 'orange'}, {type: 'banana'}];

......我说那个......

var theBestFruit = someObjects[2];

然后我们在开头添加另一个对象,移动所有元素......

someObjects.unshift({type: 'pear'});

theBestFruit还会引用香蕉对象吗?或者它现在是橘子?一些解释将非常感激。

3 个答案:

答案 0 :(得分:3)

嗯..试试吧?

提示:

someObject[2] 表达式 急切地评估(读取:对象),然后绑定< / em>(读取:分配给)变量 theBestFruit。除非重新分配theBestFruit(读取:绑定到其他内容),否则它将始终评估为相同的对象(读取:值)。

someObjects[2]以后评估其他内容并不重要 - 它不会影响theBestFruit=的绑定(读取:赋值)

答案 1 :(得分:2)

theBestFruit = someObjects[2]将查找someObject的第二个(或第三个,如果算作非程序员:p)位置(对象{type: 'banana'},并将此对象的直接引用分配给theBestFruit。引用不是someObjects的第二个对象。因此,如果someObjects发生更改,theBestFruit仍将是{{} 1}}。

测试它的最佳方法是......测试它。

答案 2 :(得分:1)

> var someObjects = [{type: 'apple'}, {type: 'orange'}, {type: 'banana'}];
undefined
> var theBestFruit = someObjects[2];
undefined
> someObjects.unshift({type: 'pear'});
4
> someObjects
[ { type: 'pear' },
  { type: 'apple' },
  { type: 'orange' },
  { type: 'banana' } ]
> theBestFruit
{ type: 'banana' }
>