当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 在window.setTimeout方法中传送对象

Javascript
javascript比较文档位置
关于document.cookie的使用javascript
js让一行页脚保持在底部
多浏览器兼容的右下角广告代码(已测)
javascript onkeydown实现键盘快捷键控制页面
javascript的键盘控制事件说明
不懂JavaScript应该怎样学
用javascript实现截取字符串包含中文处理的函数
摘自启点的main.js
js tab效果代码增强版
慢慢展开再慢慢收起的javascript广告效果
javascript String 对象
JS查看对象功能代码
javascript点击才出现验证码
js实现双击单元格变成文本输入框效果代码
js通用滑动门类
js动画效果打开层 关闭层
js插入字符到textarea的效果代码
javascript 获取网页标题
js调用flash的效果代码

Javascript 中的 在window.setTimeout方法中传送对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 235 ::
收藏到网摘: n/a

setTimeout方法是js中的延时方法,很多js的bug,只需要使用该方法延时一下,就会自动解决了,简直就是万能药方,也是我比较喜欢使用的最后手段。其语法是:
window.setTimeout(expr,msec)
expr是执行字符串,在msec毫秒之后,就会作为js运行。我昨天才发现,原来expr也可以是一个函数,呵呵,用这个特性,就可以进行对象的传送了。
下面的代码实现了把函数foo1中的对象p,延时传送到函数foo2中的功能。
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

现在很多框架其实都直接一种多投事件(它的实现原理也不复杂),一个多投事件本身,其实是是一个标准的函数,但是它一般有下述的方法。
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之类的框架,大多也采用类似的方法。