Skip to main content

Перевірка наявності властивості в об'єкті

1. Оператор in - найуніверсальніший спосіб

javascript
const user = { name: 'Alice', age: 25 }; console.log('age' in user); // true console.log('city' in user); // false

Перевіряє, чи є ключ в об'єкті (включно з властивостями, успадкованими від прототипу).


Приклад із успадкуванням:

javascript
const person = { species: 'human' }; const user = Object.create(person); user.name = 'Alice'; console.log('species' in user); // true (успадковано)

2. Метод hasOwnProperty() - перевіряє лише "власні" властивості

javascript
const user = { name: 'Alice', age: 25 }; console.log(user.hasOwnProperty('age')); // true console.log(user.hasOwnProperty('city')); // false

На відміну від in, ігнорує прототип і перевіряє лише ті властивості, які реально задані в об'єкті.


Приклад відмінності:

javascript
const person = { species: 'human' }; const user = Object.create(person); user.name = 'Alice'; console.log('species' in user); // true console.log(user.hasOwnProperty('species')); // false

3. Перевірка на undefined (найпростіший, але не завжди точний)

javascript
const user = { name: 'Alice' }; if (user.age !== undefined) { console.log('Є властивість age'); } else { console.log('Немає властивості age'); }

Мінус: якщо властивість є, але її значення undefined, ти отримаєш хибний результат.

javascript
const user = { age: undefined }; console.log(user.age !== undefined); // false - хоча ключ існує!

4. Object.hasOwn() (сучасний аналог hasOwnProperty)

ES2022 додав безпечніший і читабельніший спосіб:

javascript
const user = { name: 'Alice' }; console.log(Object.hasOwn(user, 'name')); // true console.log(Object.hasOwn(user, 'city')); // false

Працює так само, як hasOwnProperty, але не залежить від можливих перевизначень всередині об'єкта.


Підсумок

СпосібПеревіряєВраховує прототипНадійність
'key' in objнаявність властивостіТакВідмінний вибір
obj.hasOwnProperty('key')лише "власні" властивостіНіКласика
Object.hasOwn(obj, 'key')лише "власні" властивостіНіСучасний стандарт
obj.key !== undefinedзначення не undefinedНіМоже бути хибним

В одній фразі:

Щоб перевірити, чи є властивість в об'єкті, використовуй 'key' in obj - якщо важливі всі властивості (включно з успадкованими), або Object.hasOwn(obj, 'key') - якщо потрібні лише власні.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.