仅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 相关文章推荐
最新的10款jQuery内容滑块插件分享
Sep 18 Javascript
通过length属性判断jquery对象是否存在
Oct 18 Javascript
jQuery实现伸展与合拢panel的方法
Apr 30 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
多种js图片预加载实现方式分享
Feb 19 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
Jan 12 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
taro开发微信小程序的实践
May 21 Javascript
Vue中实现回车键切换焦点的方法
Feb 19 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 Javascript
JS实现页面炫酷的时钟特效示例
Aug 14 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
在PHP中利用XML技术构造远程服务(下)
2006/10/09 PHP
dedecms模板标签代码官方参考
2007/03/17 PHP
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python实现名片管理系统
2018/11/29 Python
Python单元和文档测试实例详解
2019/04/11 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
python中return不返回值的问题解析
2020/07/22 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
关键字final的用法
2013/10/02 面试题
质量管理标语
2014/06/12 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
python实现简易自习室座位预约系统
2021/06/30 Python
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL