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