Статический метод Object.hasOwn в JavaScript
Object.hasOwn()
является методом встроенного объекта Object
в JavaScript. Данный метод позволяет проверить, содержит ли объект собственное свойство определенного имени.
Различия между Object.hasOwn()
и hasOwnProperty
заключаются в следующем:
Object.hasOwn()
является статическим методом и принимает первым параметром объект, у которого проверяется наличие свойства, и вторым параметром имя свойства в виде строки.hasOwnProperty()
является методом экземпляра объекта и используется для проверки наличия собственного свойства определенного объекта.
Пример использования метода Object.hasOwn()
:
const myObj = { name: 'John', age: 32 };
const hasNameProp = Object.hasOwn(myObj, 'name');
console.log(hasNameProp); // true
const hasHeightProp = Object.hasOwn(myObj, 'height');
console.log(hasHeightProp); // false
Результат выполнения данного кода будет выводить в консоль true
, так как объект myObj
содержит свойство с именем name
. Второй вызов метода вернет false
, так как никакого свойства с именем height
в объекте не существует.
Пример использования метода hasOwnProperty()
:
const myObj = { name: 'John', age: 32 };
const hasNameProp = myObj.hasOwnProperty('name');
console.log(hasNameProp); // true
const hasHeightProp = myObj.hasOwnProperty('height');
console.log(hasHeightProp); // false
Как видно из примера, результаты использования hasOwnProperty()
будут такие же, как и в случае с Object.hasOwn()
. Однако важно учитывать, что метод hasOwnProperty()
должен вызываться у конкретного объекта, тогда как Object.hasOwn()
можно использовать независимо от типа переданного объекта.
hasOwn
рекомендуется использовать вместо Object.prototype.hasOwnProperty()
, поскольку это работает для объектов, созданных с помощью Object.create(null)
, и с объектами, которые переопределили унаследованный метод hasOwnProperty()
. Хотя эти проблемы можно обойти, вызвав Object.prototype.hasOwnProperty()
для внешнего объекта, Object.hasOwn()
более интуитивно понятен.