我在Chrome上写了一些JavaScript,然后尝试在IE8中运行它。我遇到的第一件事是缺少Array.map
,Array.filter
以及所有有用的表兄弟。为了解决这个问题,我添加了一些找到的垫片here。
这打破了我的所有for ... in ...
循环,如下所示:
>> c = [1]; {...} >> for(i in c) { console.log(i);} LOG: 1 LOG: indexOf LOG: lastIndexOf LOG: filter
我希望它只迭代数组条目。有没有办法解决这个问题,还是我需要回去编写for(i=0;i<c.length;++i)
循环?
答案 0 :(得分:2)
你需要使用hasOwnProperty
来清理你的循环,shim会为数组原型添加功能,最后你会在添加的函数上循环。
for(i in c){
if(c.hasOwnProperty(i))
{
console.log(i);
}
}
参考文献: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
http://msdn.microsoft.com/en-us/library/328kyd6z(v=vs.94).aspx
Crockford for .. in
http://javascript.crockford.com/code.html搜索“hasOwnProperty”