Spec-Zone.ru › ESLint

prefer-object-has-own

Запрещено использовать Object.prototype.hasOwnProperty.call() и предпочтительно использовать Object.hasOwn()

🔧 Исправимо

Некоторые проблемы, обнаруженные этим правилом, автоматически исправляемы с помощью параметра --fix командной строки

Очень часто код пишется так:

if (Object.prototype.hasOwnProperty.call(object, "foo")) {
  console.log("has property foo");
}

Это распространённая практика, так как методы объекта Object.prototype иногда недоступны или переопределены (см. правило no-prototype-builtins).

Представленный в ES2022, Object.hasOwn() — более краткий вариант Object.prototype.hasOwnProperty.call():

if (Object.hasOwn(object, "foo")) {
  console.log("has property foo")
}

Подробное описание правила

Примеры неправильного кода для этого правила:

Открыть в Playground
/*eslint prefer-object-has-own: "error"*/

Object.prototype.hasOwnProperty.call(obj, "a");

Object.hasOwnProperty.call(obj, "a");

({}).hasOwnProperty.call(obj, "a");

const hasProperty = Object.prototype.hasOwnProperty.call(object, property);

Примеры правильного кода для этого правила:

Открыть в Playground
/*eslint prefer-object-has-own: "error"*/

Object.hasOwn(obj, "a");

const hasProperty = Object.hasOwn(object, property);

Когда не использовать

Это правило не следует использовать, если в вашем коде не поддерживается ES2022.

Версия

Это правило было введено в ESLint v8.5.0.

Дополнительная информация

Object.hasOwn() - JavaScript | MDN

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/prefer-object-has-own

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API