🚩Оператор `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Ставь 👍 и забирай 📚 Базу знаний