修复“不要从目标对象访问Object.prototype方法'hasOwnProperty'”错误

13

根据 hasOwnProperty() 方法的文档,我写了下面的代码:

const myObj = {
  prop1: 'val1',
  prop2: 'val2'
}

if (!myObj.hasOwnProperty('prop3')) {
  myObj.prop3 = 'val3'
}

但我得到了这个错误:

不要从目标对象访问 Object.prototype 方法 'hasOwnProperty'

为什么它与文档中的相同但不起作用,如何修复?


8
这个问题的答案是什么?如何访问以下逻辑中的Object.prototype方法? - VtoCorleone
1
谢谢 :) 使用Object.prototype.hasOwnProperty.call(obj, prop)确实可以完成工作。但这并不能解释为什么ESlint拒绝从MDN文档中直接复制的代码。 - drake035
ESLint 可以以许多方式进行配置,我会小心地将“如果在 MDN 文档中出现,那么这就是唯一的方法”的想法植入心中。文档可能过时或带有个人观点。获取信息并根据自己和项目的需要去做最好的事情 :D - VtoCorleone
听起来很合理,谢谢 :) - drake035
2
这个答案解释了为什么:https://dev59.com/zFkS5IYBdhLWcg3w8aUL#39283005 - Flimm
1个回答

1
请使用hasOwn()代替:
const myObj = {
  prop1: 'val1',
  prop2: 'val2'
}

if (!myObj.hasOwn('prop3')) {

    myObj.prop3 = 'val3'

}

Object.hasOwn() 的目的是替代 Object.prototype.hasOwnProperty() 方法。HasOwn


3
hasOwn在类型上不存在... - Tadas Majeris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接