Javascript 实例化对象中的数组为什么返回未定义的值?

Javascript 实例化对象中的数组为什么返回未定义的值?,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,() 我试图创建一个数组,将一个对象初始化为该数组的成员,然后将一个文本值赋给该对象内的数组。然而,对象内部的数组给出 function test() { var test_array = []; } var arrayList = new Array(); arrayList[0] = new test(); arrayList[0].test_array[0] = "test"; 当我尝试将字符串分配给内部数组时。我对javascript还是相当陌生,所以在这种情况下,任何关于最

()

我试图创建一个数组,将一个对象初始化为该数组的成员,然后将一个文本值赋给该对象内的数组。然而,对象内部的数组给出

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

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

当我尝试将字符串分配给内部数组时。我对javascript还是相当陌生,所以在这种情况下,任何关于最佳实践的提示都将不胜感激

语句
var测试_数组=[]创建一个局部变量,该变量在其定义的范围外不可见。这里需要的是定义为对象实例属性的变量。在
测试功能中使用
参考:

TypeError: arrayList[0].test_array is undefined

有关JavaScript中作用域的更多信息,请阅读。

var
构造函数中的声明实际上不会修改实例。它们只是构造函数本身的局部作用域

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

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

更新的小提琴:

您的函数没有返回任何内容。如果您注意到我的更新,我现在将返回一个带有
test\u数组
属性的对象

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

test_数组变量只能在test()中访问。您必须使用“this”来公开它。请查看变量和属性之间的差异的可能重复“您的函数没有返回任何东西…”是的,它确实返回了。它返回一个新对象,因为它是使用
new
调用的。当我进行此更改时,我得到了SyntaxError:missing variable name@WilliamMartin:这个答案中没有语法错误。仔细阅读和打字,并仔细检查你的工作。您正在执行
var this.test_array=[],无效。@WilliamMartin奇怪,我修改了你的小提琴,正如我所描述的那样,并通过
console.log(arrayList[0]。test\u array[0])
打印了
arrayList[0]的值。它按预期工作。
function test() {
    return {
        test_array: []
    };
}