JavaScript中关于indexOf的使用方法与问题小结


Posted in Javascript onAugust 05, 2010

这个方法相当有用,很多编程语言中都有相对应的实现,javascript中也不例外,然而当我在ie中运行如下代码时候:

var arr = [1,2,3]; 
alert(arr.indexOf(1));

却被提示“对象不支持此属性和方法” 。而在chrome,ff下去运行良好。遂去求问google大神,发现原来js中Array的indexOf方法在js1.6版本中才给予了实现,ie7,8中只实现到了js1.3版本,chrome为js1.7版本,ff为js1.8版本。(ie依旧慢半拍)。无奈,只好针对ie进行扩展:
Array.prototype._indexOf = function(n){ 
if("indexOf" in this){ 
return this["indexOf"](n); 
} 
for(var i=0;i<this.length;i++){ 
if(n===this[i]){ 
return i; 
} 
} 
return -1; 
};

使用如下:
var arr = ["1","2","3"]; 
alert(arr._indexOf("2"));

这里我们针对Array的原型进行了扩展,在扩展方法的命名上我加上了"_"字符,我认为这是一个好的习惯,当你在针对原型进行扩展的时候有必要对自己的扩展加以标记。
在_indexOf方法中,我们首先判断当前Array是否实现了"indexOf" 方法,如果是的话直接调用系统发法,否则进行遍历。
Javascript 相关文章推荐
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 Javascript
JavaScript中的null和undefined解析
Apr 14 Javascript
JS中showModalDialog 的使用解析
Apr 17 Javascript
javascript里使用php代码实例
Dec 13 Javascript
Underscore.js常用方法总结
Feb 28 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
Apr 14 Javascript
微信小程序 数据绑定详解及实例
Oct 25 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
vue超时计算的组件实例代码
Jul 09 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
js继承的实现代码
Aug 05 #Javascript
一个报数游戏js版(约瑟夫环问题)
Aug 05 #Javascript
JS 实现完美include载入实现代码
Aug 05 #Javascript
使用ExtJS技术实现的拖动树结点
Aug 05 #Javascript
JavaScript 获取当前时间戳的代码
Aug 05 #Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
Aug 05 #Javascript
Js获取事件对象代码
Aug 05 #Javascript
You might like
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Linux下python3.7.0安装教程
2018/07/30 Python
django_orm查询性能优化方法
2018/08/20 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python 实现识别图片上的数字
2019/07/30 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
GWT的应用有哪两种部署模式
2012/12/21 面试题
小学教师自我鉴定
2013/11/07 职场文书
平面设计岗位职责
2013/12/14 职场文书
霸气队列口号
2014/06/18 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python