我正在尝试使用构造函数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
。
我做错了什么?
答案 0 :(得分:2)
你可以使用它:
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
,因为这是出于另一个原因:
for..in语句遍历一个的可枚举属性 对象,以任意顺序。对于每个不同的属性,语句都可以 被执行。
有关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>");
}
答案 1 :(得分:1)
您实际上正在创建一个2D数组 - 我认为您只需要一个常规数组,然后使用常规for
循环进行迭代:
var family = [
new Person("alice", 40), //omit the inner arrays, etc./.
];
for (var i = 0; i < family.length; i++) {
//check em out
console.log(family[i].name);
}