ris*_*hat 2 javascript arrays indexof internet-explorer-6
根据在IE6中将indexOf方法添加到Array类的方法,我现在如何通过迭代任意随机数组来拒绝此方法?例如:
Array.prototype.indexOf = function(needle) { ... };
var array = [1, 2, 3];
for (var i in array) {
document.write(i + ': ' + array[i]);
}
Run Code Online (Sandbox Code Playgroud)
给出输出
0: 1
1: 2
2: 3
indexOf: function ...
Run Code Online (Sandbox Code Playgroud)
如何跳过indexOf属性并停止迭代它而不向其中添加任何代码
for(...)
Run Code Online (Sandbox Code Playgroud)
叫做?
这是Javascript for..in
循环的一个众所周知的问题.
你可能认为你只是循环遍历你直接添加的数组或对象的元素,但它也会循环遍历原型中的任何方法.这会产生意想不到的后果.
它有两种方法:
首先,对于数组,不要使用for..in
.使用简单的for()
循环 - 即:
for(var counter=0; counter<myArray.length; counter++) {...}
Run Code Online (Sandbox Code Playgroud)
建议将此表单用于数组,因为它保证只遍历数值数组元素.
当然,它不适用于通用对象,因为它们没有length
属性或数字元素.对于这些,您仍然需要使用for..in
,但是您还应该始终if()
在for..in
循环中包含一个语句来过滤掉不需要的元素.
其格式应如下所示:
for (name in obj) {
if (obj.hasOwnProperty(name)) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这看起来丑陋,而是因为不这样做的问题,建议最佳实践为Javascript,给JS代码质量cheking工具如点的JSLint和JSHint将标志它作为一个问题,如果你不写for..in
像你这样的循环.
您可以在此处阅读有关此问题的更多信息:http://yuiblog.com/blog/2006/09/26/for-in-intrigue/