Javascript; “ hasOwnProperty”的使用是否多余?

时间:2018-07-11 18:39:25

标签: javascript javascript-objects

浏览一些我们的应用程序代码,我发现了以下内容:

for (prop in aBunchOfData.properties) {
  if (!aBunchOfData.properties.hasOwnProperty(prop)) continue;
  doABunchOfProcessing(aBunchOfData.properties[prop]);
}

据我了解,for ... in仅循环遍历对象的“自己”属性。 这里的hasOwnProperty支票能有所作为吗?如果是这样,在什么条件下?

谢谢!

2 个答案:

答案 0 :(得分:3)

不。 in运算符将提升原型链,而.hasOwnProperty()则不会。使用该if语句可确保仅包含对象本身的属性。为了避免使用检查,可以使用Object.keys(),它不会提升原型链。

答案 1 :(得分:0)

这很有用,因为for in循环将检查所有对象属性,包括原型道具。这效率低下,因此检查hasOwnProperty会将循环限制为该对象唯一的属性。循环的首选方式是:

Object.keys(myObject).forEach(()=> // do stuff)

map在这里也可以用作迭代器。