setTimeout
来源:互联网 发布:linux运行程序命令gcc 编辑:程序博客网 时间:2024/06/05 07:22
今天学到了两个使用setTimeout的小技巧 如下:
(1) IE中给setTimeout中的调用函数传参数
IE是不支持在setTimeout中给被调用的函数传参数的,为了浏览器世界的和谐,我们可以把函数调用参数包裹进新的匿名函数中。示例:
function f(a){
alert(a);
}
// setTimeout(f,50,'hello'); //用于非IE
setTimeout(function(){f('hello')},50); //通用
var str='hello';
setTimeout(function(){f(str)},50); //通用
(2) this问题
setTimeout调用的函数被执行时的上下文是全局,而不再是调用setTimeout方法时的上下文。所以,setTimeout的第一个参数的函数被执行时其this是指向window的,如果需要保留调用setTimeout方法时的this,就需要把当时的this传进去。示例:
function Person(name){
this.name=name;
var f=function(){
alert('My name is '+this.name);
};
// setTimeout(f,50); //错误
var THIS=this;
setTimeout(function(){f.apply(THIS)},50); //正确,通用
setTimeout(function(){f.call(THIS)},50); //正确,通用
}
new Person('Hilary Young');
(1) IE中给setTimeout中的调用函数传参数
IE是不支持在setTimeout中给被调用的函数传参数的,为了浏览器世界的和谐,我们可以把函数调用参数包裹进新的匿名函数中。示例:
function f(a){
alert(a);
}
// setTimeout(f,50,'hello'); //用于非IE
setTimeout(function(){f('hello')},50); //通用
var str='hello';
setTimeout(function(){f(str)},50); //通用
(2) this问题
setTimeout调用的函数被执行时的上下文是全局,而不再是调用setTimeout方法时的上下文。所以,setTimeout的第一个参数的函数被执行时其this是指向window的,如果需要保留调用setTimeout方法时的this,就需要把当时的this传进去。示例:
function Person(name){
this.name=name;
var f=function(){
alert('My name is '+this.name);
};
// setTimeout(f,50); //错误
var THIS=this;
setTimeout(function(){f.apply(THIS)},50); //正确,通用
setTimeout(function(){f.call(THIS)},50); //正确,通用
}
new Person('Hilary Young');
0 0
- setTimeout
- setTimeout
- setTimeout( )
- setTimeout
- setTimeout
- setTimeout
- setTimeout
- setTimeout
- setTimeout()
- setTimeout
- SetTimeOut()
- setTimeout
- setTimeout
- setTimeOut()
- setTimeout
- setTimeout
- setTimeout
- setTimeout()
- hadoop入门和简易分布式搭建
- Project Euler 9
- 你知道SEO团队的几种运营模式吗?
- [swift] UITableView单元格背景透明问题
- codeforces 463 B Caisa and Pylons
- setTimeout
- 让QToolBar工具栏的按钮既显示图标又显示文字
- 直接插入排序、希尔排序、堆排序的比较
- 鼠标悬停
- 取整数的最大值最小值值,
- NSString的常用用法(补充)
- ie6却无法点击a连接
- 一个cheat命令 == Linux命令小抄大全
- 漫谈QWidget及其派生类(菜单、菜单栏)