3 способа проверить, существует ли свойство в объекте

Краткое описание: в этом уроке вы узнаете, как проверить, существует ли свойство в объекте.

JavaScript предоставляет вам три распространенных способа проверки наличия свойства в объекте:

  • Использовать метод hasOwnProperty().
  • Использовать оператор in.
  • Сравните свойство с undefined.

Используйте метод hasOwnProperty().

В JavaScript Object.prototype есть метод hasOwnProperty(), который возвращает true, если свойство существует в объекте:

let result = targetObject.hasOwnProperty(propertyName);
Code language: JavaScript (javascript)

В следующем примере объявляется объект person:

let person = { firstName: 'John', lastName: 'Doe' };
Code language: JavaScript (javascript)

А следующий пример использует метод hasOwnProperty(), чтобы проверить, существует ли свойство firstName в объекте person:

let result = person.hasOwnProperty('firstName'); console.log(result); // true
Code language: JavaScript (javascript)

Однако свойство age не существует в объекте person, поэтому следующий код возвращает false:

let result = person.hasOwnProperty('age'); console.log(result); // false
Code language: JavaScript (javascript)

Обратите внимание, что hasOwnProperty() ищет свойство в собственных свойствах объекта.

Например, все объекты наследуют свойство toString объекта Object, метод hasOwnProperty() не обнаруживает его как свойство:

let result = person.hasOwnProperty('toString'); console.log(result); // false
Code language: JavaScript (javascript)

Используйте оператор in

Оператор in возвращает true, если свойство существует в объекте. Если свойство не существует в объекте, он возвращает false.

propertyName in targetObject

В следующем примере используется оператор in для проверки наличия свойств firstName и age в объекте person:

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 используется для проверки наличия свойства toString в объекте person. Он возвращает true, потому что toString является наследуемым свойством объекта person.

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)

В этом примере свойство age действительно существует в объекте person. Однако его начальное значение undefined. Поэтому сравнение person.age с undefined возвращает false, что не ожидается.

Резюме

  • Используйте метод hasOwnProperty(), чтобы проверить, существует ли свойство в собственных свойствах объекта.
  • Используйте оператор in для проверки наличия свойства как в собственных, так и в унаследованных свойствах объекта.
  • Сравните свойство с undefined, чтобы проверить, существует ли свойство, только если вы уверены, что начальное значение свойства не undefined.

Оцените статью
devanswers.ru
Добавить комментарий