Rumah > hujung hadapan web > tutorial js > 在window.setTimeout方法中传送对象_javascript技巧

在window.setTimeout方法中传送对象_javascript技巧

WBOY
Lepaskan: 2016-05-16 19:23:07
asal
913 orang telah melayarinya

其语法是:

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来说,我们传统的方法要这样使用它来激活方法:

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


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

----------
var e = new MuEvent();
e.addMethod(obj1, obj1.call);
e.addMethod(obj2, obj2.call);

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

 

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

----------

setTimeout(function() {

  return new MuEvent(obj1, obj1.call, obj2, obj2.call); 

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

作为一点点介绍,我所做的Qomo是用这种形式来实现的MuEvent。象Atlas之类的框架,大多也采用类似的方法。
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan