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 相关文章推荐
js(JavaScript)实现TAB标签切换效果的简单实例
Feb 26 Javascript
node.js中的buffer.fill方法使用说明
Dec 14 Javascript
jQuery实现首页顶部可伸缩广告特效代码
Apr 15 Javascript
JavaScript实现拖拽网页内元素的方法
Apr 15 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
JS实现的计数排序与基数排序算法示例
Dec 04 Javascript
详解webpack之scss和postcss-loader的配置
Jan 09 Javascript
微信小程序代码上传、审核发布小程序
May 18 Javascript
vue实现倒计时功能
Mar 24 Vue.js
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
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python模拟用户登录验证
2017/09/11 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
pytorch 预训练层的使用方法
2019/08/20 Python
python属于软件吗
2020/06/18 Python
Python实现文件压缩和解压的示例代码
2020/08/12 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
秋季运动会表扬稿
2014/01/16 职场文书
学生生病请假条范文
2014/02/16 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
老龄工作先进事迹
2014/08/15 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
小时代观后感
2015/06/10 职场文书
复活读书笔记
2015/06/29 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
吃通javascript正则表达式
2021/04/21 Javascript