2012-02-23 13 views
0

私はここに示すように定義されたJavaScriptクラスを持っている:JavaScriptクラスで配列を使用して

function Item() { 
    this.init(); 
} 

Item.prototype = { 
    id: null, 
    name: '', 
    description: '', 
    init: function() { 
    this.id = "1"; 
    } 
}; 

私は、「ログ」と呼ばれるプロパティを追加します。このプロパティを他のクラスエンティティの配列にします。この種の配列をItemクラスのプロパティとしてどのように定義すればよいですか?その配列にエンティティを追加するにはどうすればよいですか?もともと、私は "this.logs = {};"私のinit関数で。その後、別の場所で私のコードでは、私は次のことを試してみました:

Item i = new Item(); 
i.logs.push(NewLog()); 

しかし、プッシュ機能を言うエラーによって:「未定義の 『プッシュ』メソッドを呼び出すことはできません」

私が間違って何をしているのですか?

答えて

1

logsはまだ初期化されていません。また

function Item() { 
    this.init(); 
    this.logs = []; // Not {}: [] is equivalent to new Array(), and 
}     //   {} is equivalent to new Object() (not an array) 

は、JavaScript =ジャワ:(配列は、その後Itemのすべてのインスタンスで共有されるので、ないプロトタイプに)コンストラクタでそれを追加!。

var i = new Item() // instead of Item i = new Item(); 
+0

私は、配列に項目を追加するにはどうすればよいですか? 「i」が作成されたら、項目を配列に「プッシュ」するにはどうすればよいですか? –

+0

@JQueryMobileあなたは 'logs'配列(これは"クラスインスタンス "のプロパティです)に要素を追加したかったと言いました。 'i.logs.push(NewLog());'を使用してください。 –

0

あなたは試すことができます:

Item.prototype = { 
    id: null, 
    name: '', 
    description: '', 
    init: function() { 
    this.id = "1"; 
    }, 
    push: Array.prototype.push 
}; 
関連する問題