JavaScript 中向数组添加函数,如何使函数不出现在 for...in 中?
我使用 来自 Mozilla MDC 的 JavaScript 函数扩展了 Array 以支持 IE 中的 indexOf 。
不幸的是,当使用 for...in 语法迭代数组时,循环在 indexOf 处停止,而不仅仅是数字索引。
我可以在 Internet Explorer 中将 indexOf 排除在 for...in 语法之外(在 Chrome 中是这样)吗?是什么让 Array.length 属性和其他数组函数如此特别以至于 for...in 循环会跳过它们?
我知道切换到语法标准是一个解决方案,但我更喜欢 for...in 修复。
I extended Array to support indexOf in IE using this JavaScript function from Mozilla MDC.
Unfortunately, when using for...in syntax to iterate over the Array, the loop stops on indexOf instead of just numerical indexes.
Can I keep indexOf out of for...in syntax in Internet Explorer (it does in Chrome)? What makes the Array.length property and other Array functions so special that the for...in loop skips over them?
I know that switching to standard for syntax is a solution, but I would prefer a for...in fix.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
除了避免数组的 for...in 表示法之外,尝试应用防御性编程:
在 ES3(当前浏览器)中使用
for (... in ...)
语法时,始终建议您对其进行过滤:其他代码也可以丰富某些对象原型。
Aside from avoiding the for...in notation for arrays, try to apply defensive programming:
When using the
for (... in ...)
syntax in ES3 (current browsers), it's always recommended that you filter it:Other code could also enrich some object prototype.