javascrip setInterval 函数在一个对象内部的调用问题
2008-01-22 09:22
405 查看
最近改进了一下以前写的多幅图片轮流切换展示的代码,以前只是以类的方式整合到了dojo,并且在使用时必须显式调用window.setInterval方法。
这样有下面两个缺点:1 需要指定各个存放显示数据容器的名称或者传递引用进去。
2 必须显式调用window.setInterval方法才能开始循环。
很麻烦。
现在将它做成了widget,只需要传递进需要展示的数据以及循环间隔描述就可以了。
制作widget的方法就不说了,但在其中遇见了一个问题,那就是:
在一个widget(可以看做是一个javascript对象)中,如何定时循环执行当前对象的方法呢?
直接用window.setInterval("this.doXXX()",5)是无法执行的。虽然在这里我觉得this代表的应该是当前的widget,但好像javascript不是这样认为的。
按照他的理解,估计是将this当作了window对象了??
于是只能采取另一种思路:如果在最外层,也就是直接在页面上获取到当前的widget对象不就成了么?
那么,如何取到当前widget对象很简单的,通过dijit.byId(),就可以了。
所以,我这样写:
postCreate: function(){
……………………
setInterval("dijit.byId('"+this.id+"').rollerAd.showNext()",this.rollerAd.chandeSecond*1000);
………………
}
果然没有问题了。
小结:目前认为使用window.setInterval();中的方法必须是能够从window对象这一级别向下一级级取到的。所以想在一个对象内部定义一个setInterval,必须拥有这个对象在window对象级别(可以级级向下关联获取到)的引用
这样有下面两个缺点:1 需要指定各个存放显示数据容器的名称或者传递引用进去。
2 必须显式调用window.setInterval方法才能开始循环。
很麻烦。
现在将它做成了widget,只需要传递进需要展示的数据以及循环间隔描述就可以了。
制作widget的方法就不说了,但在其中遇见了一个问题,那就是:
在一个widget(可以看做是一个javascript对象)中,如何定时循环执行当前对象的方法呢?
直接用window.setInterval("this.doXXX()",5)是无法执行的。虽然在这里我觉得this代表的应该是当前的widget,但好像javascript不是这样认为的。
按照他的理解,估计是将this当作了window对象了??
于是只能采取另一种思路:如果在最外层,也就是直接在页面上获取到当前的widget对象不就成了么?
那么,如何取到当前widget对象很简单的,通过dijit.byId(),就可以了。
所以,我这样写:
postCreate: function(){
……………………
setInterval("dijit.byId('"+this.id+"').rollerAd.showNext()",this.rollerAd.chandeSecond*1000);
………………
}
果然没有问题了。
小结:目前认为使用window.setInterval();中的方法必须是能够从window对象这一级别向下一级级取到的。所以想在一个对象内部定义一个setInterval,必须拥有这个对象在window对象级别(可以级级向下关联获取到)的引用
相关文章推荐
- 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为(转)
- 一个函数返回临时对象引起的编译器优化问题
- 编写一个递归调用函数,输出vector对象的内容
- Spring AOP无法拦截对象的内部方法调用问题
- [iphone 开发学习笔记]Object-C和C语言最大的区别也是最大的扩展-----消息(即如何调用一个对象中的函数)
- 对一个包含虚函数成员的对象bzero()会有什么问题?
- 浅析C++中虚函数的调用及对象的内部布局
- C++中用函数返回值初始类对象时的一个问题
- javascript中的成员函数调用的一个小问题
- 关于“如何做到在一个类内不通过创建另一个类的对象,却调用另一个类的方法”的问题
- 关于函数调用的loop的一个问题
- 关于setInterval调用对象方法的问题
- 【原】函数返回一个指针以及返回STL对象的问题
- Golang学习之同一个package中函数互相调用的问题
- (转载)你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用
- 浅析C++中虚函数的调用及对象的内部布局
- 函数返回一个对象时要调用复制构造函数的原因
- 解决spring aop无法拦截代理内部函数调用的问题
- 对象的引用调用private类型函数的问题
- 同一个C语言工程不同C文件之间的函数互相调用问题(二)