我目前正在做有关Java的Codeacdemy教程,而在做对象教程时,我对以下内容一直不确定:
// Our Person constructor
function Person (name, age){
this.name = name;
this.age = age;
}
// Now we can make an array of people
var family = [];
family[0] = Person("alice", 40);
family[1] = Person("bob", 42);
family[2] = Person("michelle", 8);
family[3] = Person("timmy", 6);
// loop through our new array
for(var person in family){
console.log("name: "+person.name);
}
之前我在codecademy上遇到过问题,所以我在自己的网页上尝试了它,但是仍然不确定。谁能向我解释原因。我也尝试过使用
family[0].name
,这也是未定义的 最佳答案
for-in循环返回索引,而不是值。如果将其更改为console.log("name: "+family[person].name)
,它将按预期工作。
for(var person in family){
console.log(person);
console.log("name: "+person.name);
}
0
name: undefined
1
name: undefined
2
name: undefined
3
name: undefined
正如@basilikum也提到的那样,您需要使用
new
关键字创建每个人,否则他们将不是对象。console.log(Person("alice", 40)); // undefined
console.log(new Person("alice", 40)); // Person {name: "alice", age: 40}