在window.setTimeout方法中传送对象
更新时间:2006年12月22日 00:00:00 作者:
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来说,我们传统的方法要这样使用它来激活方法:
----------
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之类的框架,大多也采用类似的方法。
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之类的框架,大多也采用类似的方法。
您可能感兴趣的文章:
- Js中setTimeout()和setInterval() 何时被调用执行的用法
- Jquery中使用setInterval和setTimeout的方法
- jQuery中setTimeout的几种使用方法小结
- jQuery setTimeout()函数使用方法
- Javascript对象中关于setTimeout和setInterval的this介绍
- setTimeout的延时为0时多个浏览器的区别
- setTimeout和setInterval的区别你真的了解吗?
- setInterval和setTimeout停止的方法
- Javascript延迟执行实现方法(setTimeout)
- JS延迟加载(setTimeout) JS最后加载
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
- js setTimeout实现延迟关闭弹出层
- JavaScript setTimeout和setInterval的使用方法 说明
- setTimeout与setInterval在不同浏览器下的差异
- javascript setTimeout和setInterval 的区别
- JavaScript window.setTimeout() 的详细用法
- 在Javascript类中使用setTimeout
- setTimeout在类中使用的问题!
- setTimeout和setInterval的浏览器兼容性分析
- JS中setTimeout()的用法详解
相关文章
JavaScript使用FileSystemObject对象写入文本文件内容的方法
这篇文章主要介绍了JavaScript使用FileSystemObject对象写入文本文件内容的方法,实例分析了javascript使用ActiveXObject的技巧与常见问题的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下2015-08-08使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
这篇文章主要介绍了使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条效果,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下2017-01-01获取元素距离浏览器周边的位置的方法getBoundingClientRect
本文为大家介绍下如何使用getBoundingClientRect()方法获取元素距离浏览器周边的位置,有类似问题的朋友可以参考下哈,希望对你学习js有所帮助2013-04-04
最新评论