TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #952 5.28K
🤔 Как определить наличие свойства в объекте?

🚩Оператор `in`

Оператор in проверяет, существует ли указанное свойство в объекте или его прототипе.
const obj = {
name: 'Alice',
age: 25
};

console.log('name' in obj); // true
console.log('age' in obj); // true
console.log('gender' in obj); // false


🚩Метод `hasOwnProperty`

Метод hasOwnProperty проверяет, существует ли указанное свойство непосредственно в объекте (не в его прототипе).
const obj = {
name: 'Alice',
age: 25
};

console.log(obj.hasOwnProperty('name')); // true
console.log(obj.hasOwnProperty('age')); // true
console.log(obj.hasOwnProperty('gender')); // false


🚩Оператор `undefined`

Вы также можете проверить, является ли значение свойства undefined. Однако этот метод не отличает отсутствие свойства от свойства, имеющего значение undefined.
const obj = {
name: 'Alice',
age: 25,
gender: undefined
};

console.log(obj.name !== undefined); // true
console.log(obj.age !== undefined); // true
console.log(obj.gender !== undefined); // false, хотя свойство есть, его значение undefined
console.log(obj.height !== undefined); // false, так как свойство отсутствует


🚩Примеры использования

🟠Оператор `in` и наследование
Если свойство находится в цепочке прототипов, оператор in вернет true.
const parentObj = {
inheritedProperty: 'I am inherited'
};

const childObj = Object.create(parentObj);
childObj.ownProperty = 'I am own property';

console.log('inheritedProperty' in childObj); // true
console.log('ownProperty' in childObj); // true
console.log(childObj.hasOwnProperty('inheritedProperty')); // false
console.log(childObj.hasOwnProperty('ownProperty')); // true


🟠Проверка вложенных свойств
Для проверки наличия вложенных свойств можно использовать цепочку проверок или библиотеку, такую как Lodash, которая предоставляет функцию _.has.
const nestedObj = {
user: {
name: 'Alice',
address: {
city: 'Wonderland'
}
}
};

console.log('user' in nestedObj && 'name' in nestedObj.user); // true
console.log('user' in nestedObj && 'age' in nestedObj.user); // false
console.log('user' in nestedObj && 'address' in nestedObj.user && 'city' in nestedObj.user.address); // true


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 31
  • ❤ 1
More from @easy_javascript_ru
  1. Oct 13, 2026🤔 Что такое репозиторий? Это хранилище кода, файлов и их истории изменений. Используется…
  2. Oct 13, 2026🤔 Как мы можем замерить скорость работы участка кода с date.Now? В JavaScript можно замер…
  3. Oct 12, 2026Post #3039
  4. Oct 12, 2026🤔 Зачем нужен docker? Это инструмент для создания, развертывания и управления контейнерам…
  5. Oct 11, 2026🤔 Для чего нужен тег <noscript>? Он используется для отображения альтернативного контента…
  6. Oct 11, 2026🤔 Какими способами мы можем получить картинку с сервера? В веб-разработке есть разные спо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →