欢迎来到福编程网,本站提供各种互联网专业知识!

在window.setTimeout方法中传送对象

发布时间:2006-12-22 作者: 来源:转载
setTimeout方法是js中的延时方法,很多js的bug,只需要使用该方法延时一下,就会自动解决了,简直就是万能药方,也是我比较喜欢使用的最后手段。
其语法是:

window.setTimeout(expr,msec)

expr是执行字符串,在msec毫秒之后,就会作为js运行。我昨天才发现,原来expr也可以是一个函数,呵呵,用这个特性,就可以进行对象的传送了。
下面的代码实现了把函数foo1中的对象p,延时传送到函数foo2中的功能。

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
现在很多框架其实都直接一种多投事件(它的实现原理也不复杂),一个多投事件本身,其实是是一个标准的函数,但是它一般有下述的方法。

MuEvent.add=function(func){...}

MuEvent.addMethod=function(instance,func){...}

当使用第一种方法时,在激活func这个事件处理函数时,使用MuEvent的当前实例为this对象;第二种则使用传入的instance作为this对象。

因此对于setTimeout来说,我们传统的方法要这样使用它来激活方法:

----------
functiondoTimer(){
obj1.call();
obj2.call();
}
setTimeout(doTimer,1000);


而使用多投事件的代码就可以如下:

----------
vare=newMuEvent();
e.addMethod(obj1,obj1.call);
e.addMethod(obj2,obj2.call);

setTimeout(e,1000);
----------

当然,你想要写得COOL一点,可以是这样:

----------

setTimeout(function(){

returnnewMuEvent(obj1,obj1.call,obj2,obj2.call);

}(),1000);
----------

作为一点点介绍,我所做的Qomo是用这种形式来实现的MuEvent。象Atlas之类的框架,大多也采用类似的方法。

相关推荐