Чем отличается Object.hasOwn и Object.prototype.hasOwnProperty
Оба метода Object.hasOwn()
и Object.hasOwnProperty()
проверяют существование ключа в объекте. Они возвращают true, если указанный объект имеет собственное свойство, которое было передано. Если свойство унаследовано или не существует, метод возвращает false.
const person = { name: 'John' };
console.log(Object.hasOwn(person, 'name')); // => true
console.log(Object.hasOwn(person, 'age')); // => false
console.log(person.hasOwnProperty('name')); // => true
console.log(person.hasOwnProperty('age')); // => false
const person2 = Object.create({ gender: 'male' });
console.log(Object.hasOwn(person2, 'gender')); // => false
console.log(person.hasOwnProperty('gender')); // => false
Object.hasOwn()
более современный метод, он пришел на замену Object.hasOwnProperty()
.
Рекомендуется использовать его вместо hasOwnProperty()
, так как он работает для объектов, созданных с помощью Object.create(null)
и для объектов, которые переопределили унаследованный hasOwnProperty()
метод:
const person = Object.create(null);
person.age = 35;
console.log(Object.hasOwn(person, 'age')); // => true
console.log(person.hasOwnProperty('age')); // Error - person.hasOwnProperty is not a function
const person = {
hasOwnProperty: () => false,
age: 35,
};
console.log(Object.hasOwn(person, 'age')); // => true
console.log(person.hasOwnProperty('age')); // => 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 большой вопрос зачем? для того чтобы вывести тренды