hasOwnProperty
不要な場合は?
本JavaScript: The Good Partsには、「通常は必要である」と記載されている次の内容が含まれています。
もう 1 つの形式 ( と呼ばれる
for in
) は、オブジェクトのプロパティ名 (またはキー) を列挙します。各反復で、オブジェクトの別のプロパティ名文字列が変数に割り当てられ ます。通常、objectをテストする必要があります。
hasOwnProperty(
変数)
を使用して、プロパティ名が本当にオブジェクトのメンバーであるか、または代わりにプロトタイプ チェーンで見つかったかを判断します。for (myvar in obj) { if (obj.hasOwnProperty(myvar)) { ... } }
より具体的には、単純な辞書のようなオブジェクトのプロパティを列挙したいと思います。これは、Javasacript オブジェクト リテラル構文を使用して作成されます。次に例を示します。
var foo = { 'bar': 'baz' };
または以下を使用して作成された同様のオブジェクトJSON.parse
:
var foo = JSON.parse("{ 'bar': 'baz' }");
オブジェクトに対してhasOwnProperty
行うときに使用する必要for in
がありますか?foo
この JavaScript が、複雑な Web ページの一部としてランダムなブラウザーで実行されているとします。
答えは、「実際には、おそらく/通常は必要ありません。理論的には、一部のフレームワークまたはライブラリObject.prototype
が変更によってプロパティを追加した場合に必要になる可能性がありますObject.prototype
が、そのように変更することは、立派なフレームワークが行う可能性が低い侵入的な悪い習慣になります。 "?