JavaScript;使用“hasOwnProperty”是多余的吗?

Ger*_*ica 1 javascript javascript-objects

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

for (prop in aBunchOfData.properties) {
  if (!aBunchOfData.properties.hasOwnProperty(prop)) continue;
  doABunchOfProcessing(aBunchOfData.properties[prop]);
}
Run Code Online (Sandbox Code Playgroud)

据我了解,for ... in只会循环遍历对象的“自己”属性。这里的支票能 hasOwnProperty 起到作用吗?如果可以,在什么条件下?

谢谢!

jhp*_*ING 5

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

  • 详细说明一下,“in”迭代所有_可枚举_键,而“Object.keys()”迭代所有_自己的可枚举_键。两者都不会迭代不可枚举的键,尽管“.hasOwnProperty()”将为自己的不可枚举的键返回“true”。 (2认同)