2012-03-22 76 views
0

我想打印出每个人在循环中的名称。
但是我得到3次未定义。我该如何解决这个问题?错误tyring在JavaScript中使用循环,变得“未定义”

var Person = function(name,age){ 
    self.name = name; 
    self.age = age; 
}; 

family = {}; 
family[0] = new Person("mark", 3); 
family[1] = new Person("tom", 12); 
family[2] = new Person("michael", 45); 
family[3] = new Person("joe", 65); 

for (i=0; i<4; i++) { 
    member = family[i];  
    console.log(member.name); 
    } 

回答

2

JavaScript中没有self关键字。你的意思是this

this.name = name; 
this.age = age; 
+0

是的,这是它。我必须等待10分钟才能接受。 – junky 2012-03-22 17:51:02

1

你应该在你Person对象使用this,不self

请注意,您可能希望在family,imember之前需要var。 (除非你希望那些是全局的)

另外,请注意你正在设置一个对象字面值,它作为一个散列而不是一个数组。不知道你的意图。

+0

我试过了,''];'还有'new Array;'仍然收到错误。 – junky 2012-03-22 17:49:27

+0

@junky,是的,我更新了。 – hvgotcodes 2012-03-22 17:51:24

1

你想改用这种自我的,否则不会物体正确构建。您也可以使用push将元素添加到数组中而不是使用索引。

var Person = function(name,age){ 
    this.name = name; 
    this.age = age; 
}; 

family = []; 
family.push(new Person("John", 40)); 
family.push(new Person("Paul", 69)); 
family.push(new Person("George", 58)); 
family.push(new Person("Ringo", 71)); 

for (var i=0; i < family.length; i++) { 
    console.log(family[i].name); 
}