オブジェクト プロパティの反復処理
JavaScript では、オブジェクトのプロパティの反復処理は、多くの場合、for...in ループを使用して行われます。ただし、このループがどのように機能するかを理解することが重要です。
次のコードを考えてみましょう。
var obj = { name: "Simon", age: "20", clothing: { style: "simple", hipster: false } } for(var propt in obj){ console.log(propt + ': ' + obj[propt]); }
このコードは、propt 変数を使用して obj オブジェクトのプロパティをログに記録します。しかし、propt はこれらのプロパティをどのようにして知るのでしょうか?
propt について
propt 変数は、obj オブジェクト内の各プロパティ キーを表す一時変数です。ループが実行されると、オブジェクトのプロパティを反復処理し、各プロパティ キーを順番に propt に割り当てます。
これは、for...in ループが組み込みメソッドまたはプロパティではないためです。これは、オブジェクトの列挙可能なプロパティを反復処理する言語構造です。
The hasOwnProperty() Check
ただし、このアプローチには潜在的な問題があります。デフォルトでは、for...in ループはオブジェクトのプロトタイプ チェーンから継承されたプロパティも反復処理します。これを回避するには、次のような hasOwnProperty() チェックをループに追加することをお勧めします。
for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { // do stuff } }
このチェックにより、obj オブジェクトに固有のプロパティのみがループに含まれることが保証されます。
あるいは、 hasOwnProperty() メソッドを直接呼び出すこともできます。 object:
if (obj.hasOwnProperty(prop)) { // do stuff }
このアプローチは、特に組み込みプロパティと同じ名前を持つ無関係なフィールドがオブジェクトに含まれている場合に、より安全です。
結論
for...in ループがオブジェクト プロパティを反復処理する方法と、継承されたプロパティを回避する方法を理解することで、プログラマーはオブジェクト データを効果的に操作できるようになります。 JavaScript。
以上がJavaScript の「for...in」ループはオブジェクト プロパティをどのように反復処理するのでしょうか?また、継承されたプロパティを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。