3

jsオブジェクトのプロパティ数を取得する必要があります。

私はこのような解決策を検索して見つけました:

var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
var count = 0;
for (var k in foo) {
    if (foo.hasOwnProperty(k)) {
      ++count;
    }
}

質問:なぜ条件が必要なのif (foo.hasOwnProperty(k)) {ですか?

このコードは、この条件がなくても、常に正常に機能する必要があると思います。

私は間違っていますか?

4

3 に答える 3

3

これを参照してください:JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法は?

はい、hasOwnPropertyメソッドはここでは本当に冗長です。

とにかく、なぜプロパティをカウントする必要があるのですか?あなたは何か悪い方法を解決しているのではないかと思います。

于 2013-02-25T14:19:32.983 に答える
2

一部のオブジェクトには、システムによって追加されたプロパティがあります(つまりプロトタイプ)。

通常、それらを数えたくありません。あなたが尋ねる条件はあなたがあなたのオブジェクト自体に属するプロパティだけを数えることを確実にするでしょう。

したがって、任意のオブジェクトのカウントを返す関数を作成する場合は、条件を含める方がよいでしょう。そうでない場合は、必ずしもそうする必要はありません。

于 2013-02-25T14:24:26.607 に答える
1

継承されたメンバーを数えないようにするためです。

これを行う場合(お勧めできません):

Object.prototype.x = 1;

次に、これは4のカウントを与えます。

var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
var count = 0;
for (var k in foo) {
  ++count;
} 

しかし、if (foo.hasOwnProperty(k))それでも3が得られます。

于 2013-02-25T14:24:33.020 に答える