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: []
};
}