3

javascript for (key in obj) 構文を使用してオブジェクトを単純に反復処理しています。

var myObj = { id:'1', number:'2', name: 'my' };

var i, item;
for (i in myObj) {
    item = myObj[i];
}

最初のループ反復で i が undefined に設定され、2 番目の反復で i が「id」に設定されることを firebug デバッガー (firefox) で認識しました。この動作のために、コードにいくつかの問題があります。最初の繰り返しで未定義になるのは正常ですか? JSON表記、欠落しているプロトタイプなどと関係がありますか?

4

1 に答える 1

0

それは完全にうまくいくようです。.hasOwnProperty()ただし、プロパティがオブジェクトに属し、継承されていないことを確認するために使用したい場合があります。

var myObj = { id: "1", number: "2", name: "my" };
var i,item;
for (i in myObj) {
     if (myObj.hasOwnProperty(i)) item = myObj[i];
}

一般に、ネイティブ プロトタイプ メソッドは列挙できないという理由だけで列挙されません。ただし、Prototype や MooTools などのフレームワークを使用している場合は、それらが追加するメソッドが列挙され、ループで表示されます。.hasOwnProperty()それらが無視されることを保証します。

于 2012-11-11T02:59:07.927 に答える