在window.setTimeout方法中传送对象

时间:2021-05-25

其语法是:

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之类的框架,大多也采用类似的方法。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章