关于setTimeout和setInterval的一点新认识

今天在写个小东西的时候,用到setInterval:

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);
这样就能正确的调用了。

呼~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值