仅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 相关文章推荐
php图像生成函数之间的区别分析
Dec 06 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
Apr 02 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
jQuery的文档处理程序详解
May 10 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
Vue开发过程中遇到的疑惑知识点总结
Jan 20 Javascript
动态创建Angular组件实现popup弹窗功能
Sep 15 Javascript
JavaScript 判断iPhone X Series机型的方法
Jan 28 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
Jul 18 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
Jul 31 Javascript
vue本地打开build后生成的dist文件夹index.html问题
Sep 04 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
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
代办委托书怎样写
2014/04/08 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技