我正在尝试使用我的构造函数 Person 创建一个对象,但是当我直接在使用文字表示法的数组中初始化对象时它不起作用。
function Person (name, age) {
this.name = name;
this.age = age;
}
var family = [
[ new Person("alice", 40) ],
[ new Person("bob", 42) ],
[ new Person("michelle", 8) ],
[ new Person("timmy", 6) ]
];
for (var person in family) {
console.log(family[person].name);
}
但它只是打印了四次 undefined
。
我必须使用这个符号:
var family = new Array();
family[0] = new Person("alice", 40);
family[1] = new Person("bob", 42);
family[2] = new Person("michelle", 8);
family[3] = new Person("timmy", 6);
因此它打印出alice
、bob
、michelle
、timmy
。
我做错了什么?
最佳答案
你可以只使用这个:
var family = [
new Person("alice", 40),
new Person("bob", 42),
new Person("michelle", 8),
new Person("timmy", 6)
];
没有必要将每个 Person
括在方括号中。
现在您可以像下面这样循环遍历数组的项目:
for (var index=0; index<family.length; index++) {
console.log(family[index].name);
}
我没有使用 for..in
因为它存在的另一个原因是:
The for..in statement iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.
关于for...in
的更多细节,请查看here .
function Person (name, age) {
this.name = name;
this.age = age;
}
var family = [
new Person("alice", 40),
new Person("bob", 42),
new Person("michelle", 8),
new Person("timmy", 6)
];
for (var index=0; index<family.length; index++) {
document.write(family[index].name);
document.write("</br>");
}
关于javascript - 在数组文字中使用构造函数创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31968124/