javascript settimeout中使用this

来源:互联网 发布:四川网络广播电视台 编辑:程序博客网 时间:2024/05/21 11:26
this.waitAndShout = function(){    setTimeout('this.shout()', 5000);}

在运行以后,谁都会意识到 this 这个变量是无法找到的。但是这是为什么呢,很快就可以意识到,其实 setTimeout/setInterval 是 window 对象的一个方法,所以也可以写成 window.setTimeout/window.setInterval,那么上述的 this.shout() 就非常可以容易理解为什么不能执行了,因为它实际上调用的是 window.shout() 。

知道了原因以后解决起来就非常的容易了,只要将对象绑定到 window 对象下就可以(我对 Javascript 有趣的对象机制感到兴奋)。那么,上述的函数再做一个小的修改:

this.waitAndShout = function() {    window.Obj = this;    setTimeout('Obj.shout()', 5000);}

这样就可以了。实际上

setTimeout('Obj.shout()', 5000);

等价于

window.setTimeout('window.Obj.shout()', 5000);

 

原创粉丝点击