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

Javascript
JS option location 页面跳转实现代码
ExtJS 简介 让你知道extjs是什么
ExtJs 学习笔记 Hello World!
ExtJs 学习笔记基础篇 Ext组件的使用
ExtJs 学习笔记 Ext.Panle Ext.TabPanel Ext.Viewport
漂亮的脚本日历,和大家分享
JS Tween 颜色渐变
js 图片轮播(5张图片)
开发跨浏览器javascript常见注意事项
通用JS事件写法实现代码
Js 订制自己的AlertBox(信息提示框)
js 浮动层菜单收藏
JavaScript入门教程(10) 认识其他对象
JQuery 常用方法基础教程
jQuery 页面载入进度条实现代码
jQuery Ajax 全解析
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
Ext JS Grid在IE6 下宽度的问题解决方法
js window.event对象详尽解析
JavaScript 悬浮窗口实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 180 ::
收藏到网摘: 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之类的框架,大多也采用类似的方法。