为什么实例化对象中的数组返回undefined?

时间:2014-01-13 18:47:39

标签: javascript arrays javascript-objects

function test() {
    var test_array = [];
}

var arrayList = new Array();
arrayList[0] = new test();
arrayList[0].test_array[0] = "test";

try it out

我正在尝试创建一个数组,将对象初始化为该数组的成员,然后将文本值分配给该对象内的数组。但是对象内的数组给出了

TypeError: arrayList[0].test_array is undefined

当我尝试将字符串分配给内部数组时。我仍然是javascript的新手,所以在这种情况下最佳实践的任何提示都将非常感激。

3 个答案:

答案 0 :(得分:4)

语句var test_array = [];创建一个局部变量,该变量在其定义的范围之外是不可见的。这里需要的是定义为对象实例属性的变量。在this函数中使用test引用:

function test() {
    this.test_array = [];
}

有关JavaScript范围的更多信息,请阅读the documentation

答案 1 :(得分:2)

构造函数中的

var声明实际上并不修改实例。它们只是构造函数本身的本地范围。

要定义实例的属性,您必须修改this

function test() {
    this.test_array = [];
}

答案 2 :(得分:1)

更新小提琴: http://jsfiddle.net/5t62z/3/

你的功能没有返回任何东西。如果您注意到我的更新,我现在将返回一个具有test_array属性的对象。

function test() {
    return {
        test_array: []
    };
}