IE8对JS通过属性和数组遍历解析不一样的地方探讨

 更新时间:2013年05月06日 18:07:44   作者:  
如果是非IE8浏览器例如(IE7、IE9、Chrome、FF,仅测试这几种)通过属性和数组遍历,其结果是一样的,但对于IE8,结果会有一点小小的差异,在IE8下会把原型链扩展方法当做一个属性输出,大家可以测试一下
以文谨记在此被浏览器版本差异的坑。
复制代码 代码如下:

Array.prototype.Contains = function (str) {
if (!str)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] == str) {
return true;
}
}
return false;
}
var tmp = new Array();
tmp.push("1");
tmp.push("2");
tmp.push("3");
alert("遍历属性");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert("遍历数组");
for ( var i=0;i<tmp.length;i++ ) {
alert(tmp[i]);
}

如果是非IE8浏览器,例如(IE7、IE9、Chrome、FF,仅测试这几种)
通过属性和数组遍历,其结果是一样的。
但对于IE8,结果会有一点小小的差异,在IE8下会把原型链扩展方法当做一个属性输出,大家可以测试一下。

之所以发现这个差异,也是因为解决了一个诡异的bug,有同事在代码里面使用for ( var i in tmp )这种方式来遍历数组的每个元素,如果正好对Array定义了原型链方法,则会发生这个问题。
所以建议:如果遍历数组元素,还是应该采用标准的写法 for ( var i=0;i<tmp.length;i++ )。

相关文章

  • layui动态绑定事件的方法

    layui动态绑定事件的方法

    今天小编就为大家分享一篇layui动态绑定事件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • js不间断滚动的简单实现

    js不间断滚动的简单实现

    下面小编就为大家带来一篇js不间断滚动的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 微信js-sdk上传与下载图片接口用法示例

    微信js-sdk上传与下载图片接口用法示例

    这篇文章主要介绍了微信js-sdk上传与下载图片接口用法,结合实例形式分析了基于上传图片接口(uploadImage)和下载图片接口(downloadImage)针对图片操作的相关技巧,需要的朋友可以参考下
    2016-10-10
  • JavaScript实现简易tab栏切换内容栏

    JavaScript实现简易tab栏切换内容栏

    这篇文章主要为大家详细介绍了JavaScript实现简易tab栏切换内容栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • JavaScript 另类遍历数组实现代码

    JavaScript 另类遍历数组实现代码

    JavaScript 另类遍历数组实现代码,大家可以看下。
    2009-10-10
  • JavaScript实现忘记密码功能的示例代码

    JavaScript实现忘记密码功能的示例代码

    这篇文章主要为大家详细介绍了如何使用HTML、CSS和JavaScript实现一个完整的忘记密码功能,文中的示例代码讲解详细,需要的可以参考一下
    2024-01-01
  • js由下向上不断上升冒气泡效果实例

    js由下向上不断上升冒气泡效果实例

    这篇文章主要介绍了js由下向上不断上升冒气泡效果,实例分析了javascript操作鼠标事件、图片及样式的相关技巧,需要的朋友可以参考下
    2015-05-05
  • js实现数据双向绑定(访问器监听)

    js实现数据双向绑定(访问器监听)

    这篇文章主要为大家详细介绍了采用访问器监听的方式实现简单数据双向绑定,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Bootstrap Table的使用总结

    Bootstrap Table的使用总结

    这篇文章主要介绍了Bootstrap Table的使用小结,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • VS Code转换大小写、修改选中文字或代码颜色的方法

    VS Code转换大小写、修改选中文字或代码颜色的方法

    最近在使用VS Code,发现了不少使用的小技巧,觉着有必要给大家分享下,下面这篇文章主要给大家介绍了关于VS Code转换大小写、修改选中文字或代码颜色的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12

最新评论