Чем отличается Object.hasOwn и Object.prototype.hasOwnProperty
Оба метода Object.hasOwn()
и Object.hasOwnProperty()
проверяют существование ключа в объекте. Они возвращают true, если указанный объект имеет собственное свойство, которое было передано. Если свойство унаследовано или не существует, метод возвращает false.
const company1 = { name: 'Hexlet' };
console.log(Object.hasOwn(company1, 'name')); // => true
console.log(Object.hasOwn(company1, 'createdAt')); // => false
console.log(company1.hasOwnProperty('name')); // => true
console.log(company1.hasOwnProperty('createdAt')); // => false
const company2 = Object.create({ description: 'Technology company' });
console.log(Object.hasOwn(company2, 'description')); // => false
Object.hasOwn()
более современный метод, он пришел на замену Object.hasOwnProperty()
.
Рекомендуется использовать его вместо hasOwnProperty()
, так как он работает для объектов, созданных с помощью Object.create(null)
и для объектов, которые переопределили унаследованный hasOwnProperty()
метод:
const company1 = Object.create(null);
company1.createdAt = '01-01-2005';
console.log(Object.hasOwn(company1, 'createdAt')); // => true
console.log(company1.hasOwnProperty('createdAt')); // Error - company1.hasOwnProperty is not a function
const company1 = {
hasOwnProperty: () => false,
createdAt: '01-01-2005',
};
console.log(Object.hasOwn(company1, 'createdAt')); // => true
console.log(company1.hasOwnProperty('createdAt')); // => false
Согласен с Егором:
тут наш копирщик
const person2 = Object.create({ gender: 'male' });
console.log(Object.hasOwn(person2, 'gender')); // => false
console.log(person.hasOwnProperty('gender')); // => false
забыл "скопировать" комментарий. Администрация вообще не следит за наполнением?
Всё в одном месте, не вижу ничего плохого
Больше меня всего удивляет, что люди копируют чужую информацию, https://stackoverflow.com/questions/69561596/object-hasown-vs-object-prototype-hasownproperty большой вопрос зачем? для того чтобы вывести тренды