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


Posted in Javascript onMay 06, 2013

以文谨记在此被浏览器版本差异的坑。

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++ )。

Javascript 相关文章推荐
javascript 一个自定义长度的文本自动换行的函数
Aug 19 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
Jan 23 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
javascript实现json页面分页实例代码
Feb 20 Javascript
javascript数据类型示例分享
Jan 19 Javascript
JS判断图片是否加载完成方法汇总(最新版)
May 13 Javascript
AngularJs 国际化(I18n/L10n)详解
Sep 01 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
Oct 20 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 #Javascript
JavaScript创建类/对象的几种方式概述及实例
May 06 #Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 #Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 #Javascript
jQuery动画animate方法使用介绍
May 06 #Javascript
JS修改css样式style浅谈
May 06 #Javascript
用JavaScript修改CSS属性的代码
May 06 #Javascript
You might like
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
php实现水仙花数的4个示例分享
2014/04/08 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
Laravel 队列使用的实现
2019/01/08 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
Python写入CSV文件的方法
2015/07/08 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
建筑经济管理专业求职信分享
2014/01/06 职场文书
大学生村官事迹材料
2014/01/21 职场文书
《白鹅》教学反思
2014/04/13 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
结婚堵门保证书
2015/05/08 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL