Disallow use of and prefer use of Object.hasOwn()

πŸ›  Fixable

Some problems reported by this rule are automatically fixable by the --fix command line option

It is very common to write code like:

if (, "foo")) {
console.log("has property foo");

This is a common practice because methods on Object.prototype can sometimes be unavailable or redefined (see the no-prototype-builtins rule).

Introduced in ES2022, Object.hasOwn() is a shorter alternative to

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

Rule Details

Examples of incorrect code for this rule:

/*eslint prefer-object-has-own: "error"*/, "a");, "a");

({}), "a");

const hasProperty =, property);

Examples of correct code for this rule:

/*eslint prefer-object-has-own: "error"*/

Object.hasOwn(obj, "a");

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

When Not To Use It

This rule should not be used unless ES2022 is supported in your codebase.


This rule was introduced in ESLint v8.5.0.

Further Reading