javascript阵列推送会发生什么?

时间:2011-04-02 16:24:39

标签: javascript arrays

所以我有:

var something = function () { return 6}

var foo = new something();

var arr = []
var arr2 = []

arr2.push(foo)arr.push(foo)

后台会发生什么?是foo重复并放在2个地方? foo只是foo,数组中的内容是对foo的引用吗?

感谢。

2 个答案:

答案 0 :(得分:7)

编辑:我误读了。因为您使用new调用函数,所以您创建了一个新对象。任何对象都通过引用传递。

var something = function () { return 6}

var foo = new something();

typeof fooobject,因此在这种情况下,它会通过引用传递。

非常确定foo是重复的,因为它是基元而不是对象。

答案 1 :(得分:1)

数组中的内容是对同一个实例的引用。这可以使用例如chrome javascript console ...

轻松检查

enter image description here

正如您所看到的,将新成员x添加到arr1[0]会使其显示在arr2[0]上。