概要: このチュートリアルでは、オブジェクトにプロパティが存在するかどうかを確認する方法を学習します。
JavaScriptは、オブジェクトにプロパティが存在するかどうかを確認する3つの一般的な方法を提供します。
hasOwnProperty()
メソッドを使用する。in
演算子を使用する。- プロパティを
undefined
と比較する。
hasOwnProperty()メソッドを使用する
JavaScriptのObject.prototype
には、オブジェクトにプロパティが存在する場合にtrue
を返すhasOwnProperty()
メソッドがあります。
let result = targetObject.hasOwnProperty(propertyName);
Code language: JavaScript (javascript)
次の例では、person
オブジェクトを宣言しています。
let person = {
firstName: 'John',
lastName: 'Doe'
};
Code language: JavaScript (javascript)
そして、以下はhasOwnProperty()
メソッドを使用して、person
オブジェクトにfirstName
プロパティが存在するかどうかを確認しています。
let result = person.hasOwnProperty('firstName');
console.log(result); // true
Code language: JavaScript (javascript)
ただし、`person`オブジェクトには`age`プロパティが存在しないため、次のコードは`false`を返します。
let result = person.hasOwnProperty('age');
console.log(result); // false
Code language: JavaScript (javascript)
hasOwnProperty()
は、オブジェクトの独自のプロパティでプロパティを検索することに注意してください。
たとえば、すべてのオブジェクトはObject
のtoString
プロパティを継承しますが、hasOwnProperty()メソッドはそれをプロパティとして検出しません。
let result = person.hasOwnProperty('toString');
console.log(result); // false
Code language: JavaScript (javascript)
in演算子を使用する
in
演算子は、オブジェクトにプロパティが存在する場合にtrue
を返します。プロパティがオブジェクトに存在しない場合は、false
を返します。
propertyName in targetObject
次の例では、in
演算子を使用して、person
オブジェクトにfirstName
プロパティとage
プロパティが存在するかどうかを確認しています。
let person = {
firstName: 'John',
lastName: 'Doe'
};
let result = 'firstName' in person;
console.log(result); // true
result = 'age' in person;
console.log(result); // false
Code language: JavaScript (javascript)
hasOwnProperty()
メソッドとは異なり、in
演算子はオブジェクトの独自のプロパティと継承されたプロパティの両方でプロパティを検索します。
次の例では、`in`演算子を使用して、`person`オブジェクトに`toString`プロパティが存在するかどうかを確認しています。 `toString`は`person`オブジェクトの継承されたプロパティであるため、`true`を返します。
let person = {
firstName: 'John',
lastName: 'Doe'
};
let result = 'toString' in person;
console.log(result); // true
Code language: JavaScript (javascript)
プロパティをundefinedと比較する
オブジェクトの既存ではないプロパティにアクセスすると、undefined
が返されます。したがって、プロパティをundefined
と比較して、オブジェクトにプロパティが存在するかどうかを確認できます。
let person = {
firstName: 'John',
lastName: 'Doe'
};
let result = person.firstName !== undefined;
console.log(result); // true
Code language: JavaScript (javascript)
オブジェクトに値がundefined
のプロパティがある場合、プロパティをundefined
と比較すると、正しくない結果が返されます。例えば
let person = {
firstName: 'John',
lastName: 'Doe',
age: undefined
};
let result = person.age !== undefined;
console.log(result); // false
Code language: JavaScript (javascript)
この例では、`person`オブジェクトに`age`プロパティは存在します。ただし、初期値は`undefined`です。したがって、`person.age`を`undefined`と比較すると、予期しない`false`が返されます。
まとめ
hasOwnProperty()
メソッドを使用して、オブジェクトの独自のプロパティにプロパティが存在するかどうかを確認します。in
演算子を使用して、オブジェクトの独自のプロパティと継承されたプロパティの両方にプロパティが存在するかどうかを確認します。- プロパティの初期値が
undefined
ではないことが確実な場合にのみ、プロパティをundefined
と比較して、プロパティが存在するかどうかを確認します。