1

我使用Mozilla MDC 的这个 JavaScript 函数扩展了 Array 以支持 IE 中的 indexOf 。

不幸的是,当使用 for...in 语法遍历数组时,循环在 indexOf 上停止,而不仅仅是数字索引。

我可以在 Internet Explorer 中将 indexOf 排除在 for...in 语法之外吗(在 Chrome 中可以)?是什么让 Array.length 属性和其他 Array 函数如此特别以至于 for...in 循环跳过了它们?

我知道切换到语法标准是一种解决方案,但我更喜欢 for...in 修复。

4

1 回答 1

1

除了避免数组的 for...in 表示法之外,尝试应用防御性编程:在 ES3(当前浏览器)中
使用for (... in ...)语法时,始终建议您过滤它:

var member;
for (member in someObject) {
  if (someObject.hasOwnProperty(member)) {
    someObject[member]; // do whatever you want with it
  }
}

其他代码也可以丰富一些对象原型。

于 2011-02-04T07:06:12.157 回答