JavaScript でオブジェクトを扱う場合、多くの場合、特定のプロパティが存在するかどうかを確認する必要があります。ただし、プロパティ名が変数に格納されている場合、従来の方法は効果的に機能しない可能性があります。
指定されたコード スニペットでは、開発者は myObj オブジェクトに 'prop' という名前のプロパティがあるかどうかを確認しようとしますが、 myProp 変数が文字列連結で誤って定義されています。その結果、コードは存在しないプロパティ 'myProp' を検索します。
この問題に対処するには、いくつかの代替アプローチを使用できます。
hasOwnProperty() メソッドは、指定されたプロパティがオブジェクト内で直接定義されているかどうか (プロトタイプから継承されていないかどうか) を検証します。
<code class="js">var myProp = 'prop'; if(myObj.hasOwnProperty(myProp)){ alert("yes, i have that property"); }</code>
in 演算子は、直接定義されているか継承されているかに関係なく、指定されたプロパティがオブジェクト内に存在するかどうかを確認します。
<code class="js">var myProp = 'prop'; if(myProp in myObj){ alert("yes, i have that property"); }</code>
プロパティ名が確実にわかっている場合は、変数を使用せずに直接チェックできます。
<code class="js">if('prop' in myObj){ alert("yes, i have that property"); }</code>
注: hasOwnProperty () メソッドは継承されたプロパティを無視しますが、in 演算子には継承されたプロパティが含まれます。したがって、アプローチの選択は、継承されたプロパティが実行されるチェックに関連するかどうかによって決まります。
以上が動的プロパティ名を持つプロパティが Javascript オブジェクトに存在するかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。