仅IE不支持setTimeout/setInterval函数的第三个以上参数


Posted in Javascript onMay 25, 2011
setTimeout(function(obj){ 
alert(obj.a); 
}, 2000, {a:1});

即传了第三个参数,第三个参数将作为回调函数的参数obj传入。在非IE浏览器中都弹出了1。这样有个好处,即解决了回调函数的执行上下文,比如要调用某个对象的某个方法,即可以通过参数把该对象传进去。
setTimeout(function(obj){ 
obj.method(); 
}, 2000, obj);

当然,你还可以传多个参数给回调函数,如下
setTimeout(function(a, b){ 
alert(a); 
alert(b); 
}, 2000, 1,2);

这次我们传了两个参数1,2给回调函数,Firefox/Safari/Chrome/Opera中依次弹出了1,2。只要你愿意还可以传更多。

虽然除了IE不支持第三个参数外,但Firefox和Safari/Chrome/Opera之间还是有区别的

setTimeout(function(){ 
alert(arguments.length); 
}, 2000, 1,2);

传了两个参数1,2给回调函数,然后alert出实参的长度
Firefox : 3
Safari/Chrome/Opera : 2
奇怪吧,明明传的是两个参数,但Firefox中弹出的却是3。如果输出第三个参数会发现它是一个数字,有时还是负数。
关:

http://www.w3.org/TR/Window/

https://developer.mozilla.org/en/DOM/window.setTimeout

http://msdn.microsoft.com/en-us/library/ms536753%28v=vs.85%29.aspx 
//解决IE下setTimeout传参数的bug

//解决IE下setTimeout传参数的bug 
if(!+[1,]) { 
(function(overrideFun){ 
window.setTimeout = overrideFun(window.setTimeout); 
window.setInterval = overrideFun(window.setInterval); 
})( 
function(originalFun){ 
return function(code, delay){ 
var args = [].slice.call(arguments, 2); 
return originalFun( 
function(){ 
if (typeof code == 'string') { 
eval(code); 
} 
else { 
code.apply(this, args); 
} 
}, 
delay 
) 
} 
} 
); 
}
Javascript 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
二叉树的非递归后序遍历算法实例详解
Feb 07 Javascript
Javascript验证上传图片大小[前台处理]
Jul 18 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
Nov 25 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
一百行JS代码实现一个校验工具
Apr 30 Javascript
Vue函数式组件的应用实例详解
Aug 30 Javascript
js实现选项卡效果
Mar 07 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
Oct 29 Javascript
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
Apr 09 Javascript
IE6/7/8/9不支持exec的简写方式
May 25 #Javascript
25个优雅的jQuery Tooltip插件推荐
May 25 #Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 #Javascript
javascript中String类的subString()方法和slice()方法
May 24 #Javascript
js中关于String对象的replace使用详解
May 24 #Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
May 24 #Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
May 24 #Javascript
You might like
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
python购物车程序简单代码
2018/04/18 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
Python-split()函数实例用法讲解
2020/12/18 Python
详解Python模块化编程与装饰器
2021/01/16 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
ORACLE第二个十问
2013/12/14 面试题
自立自强的名人事例
2014/02/10 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
争先创优演讲稿
2014/09/15 职场文书
会计电算化实训报告
2014/11/04 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
早上好问候语大全
2015/11/10 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电