all-threads-bot

Frontender`s Spectre

Статический метод Object.hasOwn в JavaScript

29 марта 2023 г., 14:04

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() более интуитивно понятен.