2012-03-22 73 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); 
}