Поиск по сайту
Ctrl + K
Вопросы по JS

Как проверить, есть ли у объекта конкретное свойство?

В JavaScript существует несколько способов проверить, содержит ли объект определенное свойство. Рассмотрим несколько популярных методов.

1. Использование оператора in

Оператор in проверяет, есть ли у объекта указанное свойство. Этот метод вернет true, даже если свойство унаследовано от прототипа.

Пример:

let person = {
  name: 'John',
  age: 30
};

console.log('name' in person);  // true
console.log('address' in person);  // false

Примечание:

Оператор in также проверяет свойства, унаследованные через прототип. Если вам нужно проверить только собственные свойства объекта, следует использовать другие методы.

2. Использование метода hasOwnProperty()

Метод hasOwnProperty() проверяет, является ли свойство собственным для объекта (то есть оно не унаследовано от прототипа). Этот метод вернет true, если свойство является собственным, и false, если оно унаследовано.

Пример:

let person = {
  name: 'John',
  age: 30
};

console.log(person.hasOwnProperty('name'));  // true
console.log(person.hasOwnProperty('address'));  // false

Примечание:

Этот метод полезен, если нужно исключить унаследованные свойства и проверить только те, которые прямо принадлежат объекту.

3. Использование оператора typeof (для проверки существования значений)

Если нужно проверить, что свойство существует и не имеет значения undefined, можно использовать оператор typeof. Однако этот метод не проверяет, является ли свойство объектом или массивом.

Пример:

let person = {
  name: 'John',
  age: undefined
};

console.log(typeof person.name !== 'undefined');  // true
console.log(typeof person.age !== 'undefined');  // false

Примечание:

Этот метод позволяет узнать, существует ли свойство, но не дает точной информации о его происхождении (собственное ли оно или унаследованное).

4. Использование Object.hasOwn() (ES2022)

С ES2022 появился новый метод Object.hasOwn(), который является альтернативой методу hasOwnProperty() и более современным способом проверки наличия собственного свойства объекта.

Пример:

let person = {
  name: 'John',
  age: 30
};

console.log(Object.hasOwn(person, 'name'));  // true
console.log(Object.hasOwn(person, 'address'));  // false

Примечание:

Этот метод аналогичен hasOwnProperty(), но является более кратким и современным способом проверки.

Итог

Вот основные способы проверки наличия свойства у объекта:

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