什么时候hasOwnProperty
不需要?
这本书JavaScript: The Good Parts包括以下内容,即“通常是必要的”:
另一种形式(称为
for in
)枚举对象的属性名称(或键)。在每次迭代中,来自对象的另一个属性名称字符串被分配给 变量。通常需要测试对象。
hasOwnProperty(
变量)
来确定属性名称是真正的对象成员还是在原型链上找到的。for (myvar in obj) { if (obj.hasOwnProperty(myvar)) { ... } }
更具体地说,我想枚举一个简单的类字典对象的属性,该对象是使用 Javsacript 对象文字语法创建的,例如:
var foo = { 'bar': 'baz' };
或使用以下方法创建的类似对象JSON.parse
:
var foo = JSON.parse("{ 'bar': 'baz' }");
我应该在对象上使用hasOwnProperty
时使用吗?for in
foo
假设这个 javascript 作为复杂网页的一部分在随机浏览器中运行。
答案是,“在实践中可能/通常没有必要。理论上,如果某些框架或库通过更改添加属性可能是必要的Object.prototype
,但Object.prototype
这样的更改将是一种侵入性的不良做法,任何受人尊敬的框架都不太可能这样做“?