【发布时间】:2019-05-16 12:24:17
【问题描述】:
我在Object的原型中添加了一个方法trigger:
Object.prototype.trigger = function() {
// ...
return this;
};
然后有一个“for in”循环:
var obj = { 4: 15, 10 : 41, 11 : 46, 12 : 51, 20 : 74 }
for( item in obj ) {
foo( obj[item] );
}
但是这个循环有 6 次迭代而不是 5 次。最后一次迭代是带键的:
item = "trigger"
为什么循环会遍历对象的__proto__ 部分?
【问题讨论】:
-
for in 是这样写的。使用
hasOwnProperty检查是否不是proto属性 -
放错了重复链接。无论如何,
for..in会迭代 所有 可枚举的属性。
标签: javascript for-loop prototype