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调用C#代码
Jan 17 Javascript
seajs1.3.0源码解析之module依赖有序加载
Nov 07 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 Javascript
jQuery中innerHeight()方法用法实例
Jan 19 Javascript
javascript中eval函数用法分析
Apr 25 Javascript
Bootstrap入门书籍之(三)栅格系统
Feb 17 Javascript
jQuery siblings()用法实例详解
Apr 26 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
浅谈在react中如何实现扫码枪输入
Jul 04 Javascript
通过实例解析js简易模块加载器
Jun 17 Javascript
利用JavaScript的Map提升性能的方法详解
Aug 14 Javascript
一起深入理解js中的事件对象
Feb 06 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
php 常用类汇总 推荐收藏
2010/05/13 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
Web程序工作原理详解
2014/12/25 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
别名指示符是什么
2012/10/08 面试题
大学生专科毕业生自我评价
2013/11/17 职场文书
学习委员自我鉴定
2014/01/13 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
教师新年寄语
2014/04/03 职场文书
教师自荐信范文
2015/03/06 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
python基础之爬虫入门
2021/05/10 Python