关于setTimeout和setInterval的一点新认识
2014-10-23 21:14
330 查看
今天在写个小东西的时候,用到setInterval:
打印这个返回的“句柄”ret,发现是一个number类型数字。经过搜索,这个返回值应该称为ID标识,用来表示推入栈的函数。
所以在之后多设置一些setTimeout和setInterval,他们的返回值是越来越大的。
不过我想,既然返回的ID标识是一个数字,那么我在clearTimeout和clearInterval中直接传入一个数字,还能不能有效呢?
经过试验,果然有效……比如ret返回的ID值是12,我执行clearInterval(12)后,这个定时调用就失效了。
另外,我是在一个对象的方法中调用setInterval,而定时调用的那个函数也是这个对象的一个方法,所以涉及到this的指向问题。
我们知道,在setInterval和setTimeout中定时执行的函数,其实是在全局下调用的,所以this是指向window的。那么像我这个情况,我应该怎么才能正确的调用指定对象的方法呢?
其实就是用call(或apply)了,请看:
呼~~~
var ret = setInterval(func, 1000);
打印这个返回的“句柄”ret,发现是一个number类型数字。经过搜索,这个返回值应该称为ID标识,用来表示推入栈的函数。
所以在之后多设置一些setTimeout和setInterval,他们的返回值是越来越大的。
不过我想,既然返回的ID标识是一个数字,那么我在clearTimeout和clearInterval中直接传入一个数字,还能不能有效呢?
经过试验,果然有效……比如ret返回的ID值是12,我执行clearInterval(12)后,这个定时调用就失效了。
另外,我是在一个对象的方法中调用setInterval,而定时调用的那个函数也是这个对象的一个方法,所以涉及到this的指向问题。
我们知道,在setInterval和setTimeout中定时执行的函数,其实是在全局下调用的,所以this是指向window的。那么像我这个情况,我应该怎么才能正确的调用指定对象的方法呢?
其实就是用call(或apply)了,请看:
var _this = this; var interval = setInterval(function(){ myObject.prototype.myFunc.call(_this); }, 1000);这样就能正确的调用了。
呼~~~
相关文章推荐
- 关于DropDownList绑定数据的一点认识
- 关于Session的一点认识
- 关于wince核心的一点认识(未验证)
- 关于setTimeout和setInterval
- [笔记].关于使用JLINK的三线SWD模式调试NUC1xx的一点粗浅认识
- 关于C#的索引一点认识
- 关于Editor和Renderer的一点认识
- 关于extern 与static 的一点认识
- 关于String Pool的一点认识
- 初学者关于协议栈中绑定流程的一点认识
- 关于AJAX.NET 的一点认识
- 关于DropDownList绑定数据的一点认识
- 关于java匿名内部类的一点认识
- 关于框架的一点认识
- 关于设计的度的一点小认识
- 关于对设计模式的一点认识
- 关于ACCESS的日期类型字段比较的一点认识
- JavaScript中关于setTimeout和setInterval的使用
- 关于C#的索引一点认识
- 关于jquery选择器的一点认识,记录下来,以供日后查阅