npmecmascript-695% confidence\u2191 330

Object.hasOwnProperty() yields the ESLint 'no-prototype-builtins' error: how to fix?

Full error message
I am using the following logic to get the i18n string of the given key.

export function i18n(key) {
  if (entries.hasOwnProperty(key)) {
    return entries[key];
  } else if (typeof (Canadarm) !== 'undefined') {
    try {
      throw Error();
    } catch (e) {
      Canadarm.error(entries['dataBuildI18nString'] + key, e);
    }
  }
  return entries[key];
}

I am using ESLint in my project. I am getting the following error:

  Do not access Object.prototype method 'hasOwnProperty' from target object.
  It is a 'no-prototype-builtins' error. 

How do I change my code to resolve this error ? I don't want to disable this rule.

You can access it via Object.prototype: Object.prototype.hasOwnProperty.call(obj, prop); That should be safer, because Not all objects inherit from Object.prototype Even for objects which inherit from Object.prototype, the hasOwnProperty method could be shadowed by something else. Of course, the code above assumes that The global Object has not been shadowed or redefined The native Object.prototype.hasOwnProperty has not been redefined No call own property has been added to Object.prototype.hasOwnProperty The native Function.prototype.call has not been redefined If any of these does not hold, attempting to code in a safer way, you could have broken your code! Another approach which does not need call would be !!Object.getOwnPropertyDescriptor(obj, prop);

API access

Get this solution programmatically \u2014 free, no authentication.

curl https://depscope.dev/api/error/f26222c76e02025af9ee1d9ef6b4efc3c5d48d9acc506c1604778ec080811d4e
hash \u00b7 f26222c76e02025af9ee1d9ef6b4efc3c5d48d9acc506c1604778ec080811d4e
Object.hasOwnProperty() yields the ESLint 'no-prototype-… — DepScope fix | DepScope