如何避免...在拖欠款问题上?

use*_*931 3 javascript eslint

我有一个带有一些键和值的对象。

我最初有这个循环:

  for(const key in commands) {
    if (commands.hasOwnProperty(key)) {
      const value = commands[key];
      // Do something else
    }
  }
Run Code Online (Sandbox Code Playgroud)

这给了我以下的错误提示:

for..in循环遍历整个原型链,这实际上并不是您想要的。使用Object。{keys,values,entries},然后遍历结果数组。(无限制语法)

所以我将其更改为:

  Object.keys(commands).forEach(key => {
    if (commands.hasOwnProperty(key)) {
      const value = commands[key];
    }
  });
Run Code Online (Sandbox Code Playgroud)

现在,由于出现以下错误hasOwnProperty

不要从目标对象访问Object.prototype方法'hasOwnProperty'。(无原型内置)

我如何编写一个简单的循环来遍历键,同时避免出现错误?

Nic*_*wer 6

使用时Object.keys,无需检查hasOwnProperty。Object.keys产生一个专有属性数组。这就是为什么第一个eslint错误建议您使用它的原因。

对于第二个皮棉错误,建议您这样做

Object.prototype.hasOwnProperty.call(commands, key)
Run Code Online (Sandbox Code Playgroud)

此规则存在的原因commands.hasOwnPropertyundefined,如果使用创建命令,则可能存在Object.create(null)。不过,就您而言,您只需要删除检查:

Object.keys(commands).forEach(key => {
  const value = commands[key];
  // Do something else
});
Run Code Online (Sandbox Code Playgroud)