有很多解决方案可以将indexOf实现添加到Array原型中,以便在Internet Explorer下运行,但是我遇到了一个问题,到目前为止似乎没有任何地方提到过。
使用经过广泛认可的MDC实现,我现在有以下有问题的代码:
// indexOf support for IE (from MDC)
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0) ? Math.ceil(from) : Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this && this[from] === elt)
return from;
}
return -1;
};
}
var i = [1,2,3,4];
for (j in i)
{
alert(i[j]);
}
我希望收到4个警报,每个警报包含数组中的一个元素。 在Firefox和Chrome中,我看到的正是这样,然而在IE8中,我会得到一个包含indexOf函数代码的额外警报。
有什么方法可以避免这种情况?