hasOwnProperty() を使用してオブジェクトのプロパティを確認する
メニューを表示するにはスワイプしてください
for...inループを使用してオブジェクトのプロパティを反復処理する際には、オブジェクト自身のプロパティとプロトタイプから継承されたプロパティを区別することが重要です。
JavaScriptでは、オブジェクトに直接定義されていないプロパティも反復処理中に現れる場合があります。これは、オブジェクトが他のオブジェクトからプロパティを継承できるためです。
hasOwnProperty()メソッドを使用することで、オブジェクト自身に直接属するプロパティのみを扱うことができます。
hasOwnProperty()の理解
hasOwnProperty()メソッドは、プロパティがオブジェクト自身に直接存在するかどうかを確認するための組み込みJavaScriptメソッドです。戻り値はBoolean値(trueまたはfalse)です。
構文
object.hasOwnProperty(property)
object: チェックしたいオブジェクトproperty: 検索するプロパティ名
hasOwnProperty()が役立つ理由
次の例を考えてみましょう:
12345678910const baseExercise = { category: "Strength", }; const exercise = Object.create(baseExercise); exercise.name = "Deadlift"; for (let key in exercise) { console.log(key); }
category は exercise に直接定義されていませんが、ループ内で表示されます。このため、追加のチェックが必要です。
hasOwnProperty() と for...in の併用
for...in と hasOwnProperty() を組み合わせることで、オブジェクト自身のプロパティのみを安全に反復処理できます。
12345678910111213const exercise = { name: "Deadlift", primaryMusclesWorked: "Erector spinae", equipment: "Barbell", exerciseType: "Strength", difficulty: "Intermediate", }; for (let key in exercise) { if (exercise.hasOwnProperty(key)) { console.log(`Property: ${key}, Value: ${exercise[key]}`); } }
このチェックにより、継承されたプロパティが無視され、コードの予測性と安全性が向上します。
1. hasOwnProperty() メソッドの主な目的は何ですか?
2. hasOwnProperty() メソッドはどのような型の値を返しますか?
3. hasOwnProperty() ループで for...in を使用する際、なぜ自身のプロパティを確認することが重要ですか?
4. 以下のコードで、video オブジェクトのプロパティを反復処理したときにログに出力されるものは何ですか?
すべて明確でしたか?
フィードバックありがとうございます!
セクション 3. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 3. 章 3