1

Javascriptでハッシュ内のすべての値を見つけるために、次のコードを見ました。

var myHash = {};
myHash['one'] = 1;
myHash['two'] = 2;
for (var key in myHash) {
    if (myHash.hasOwnProperty(key)) {
        //do something
    }
}

ここでhasOwnPropertyをチェックすることのポイントは何ですか?

4

3 に答える 3

2

重要なのは、それがプロトタイプチェーンを介して継承されたものではなく、key直接定義されたプロパティであることを確認することです。myHashを使用inしても、継承されたプロパティは自動的に除外されないため、自分で行うことができます。

しかし、他の人が言っているように、それはあなたの特定の例には必要ありません。

出典: hasOwnPropertyMDN上

于 2012-09-20T16:26:36.787 に答える
0

myHashが列挙可能なプロパティを持つオブジェクトの新しいインスタンスである場合は、メソッドやその他の継承されたプロパティが一覧表示されないようにするのがより重要かもしれません。

于 2012-09-20T16:27:40.123 に答える
0

その特定のケースでは違いはありませんが、myHashに「継承された」プロパティがある場合、hasOwnPropertyチェックなしでそれらもループされます。

これはおそらく予防策であり、コーダーがすべての行が必要かどうかをチェックすることを心配せず、それが機能しただけのコピーペーストですらあります。

于 2012-09-20T16:28:21.340 に答える