2012-03-22 8 views
0

ループ内の各自の名前を印刷しようとしています。
しかし、私は3回不定になります。どうすれば修正できますか?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

1

あなたPersonオブジェクトにthis、ないselfを使用する必要があります。

メモとして、familyi、およびmemberの前には、おそらくvarが必要です。 (それらをグローバルにしたくない場合)

また、配列ではなくハッシュとして機能するオブジェクトリテラルを設定していることに注意してください。あなたが意図したものを知らない。

+0

私は '[];'と 'new Array;'も試しましたが、まだエラーが発生しています。 – junky

+0

@junky、はい、私は更新しました。 – hvgotcodes

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); 
}