请问老师,setTimeout中的self.update()为什么要放在function里面?
来源:2-5 canvas实现解锁成功-canvas案例
PHXL
2019-07-26 09:26:34
我知道setTimeout(self.update(),300);是直接执行update(),但是setTimeout(self.update,300);也是错的
2回答
同学你好,
1、关于定时器中的匿名函数,同学理解的没有问题。
2、this指向绑定事件的元素对象,因为reset方法是定义在canvasLock对象上的,所以this指向的就是这个对象。而在定时器中,调用定时器的是window,所以this指向的是window。而reset方法是在canvasLock对象上的,所以提前定义self接收了this(canvasLock),定时器中就用self调用。
自己可以测试理解下,祝学习愉快!
PHXL
提问者
2019-07-26
setTimeout(function(){self.update()},300);是定义了一个匿名函数function,并在里面调用了self.update();所以不会立即执行。
使用以上方法,在update()函数中console.log(this)结果是canvasLock对象,
但使用window.setTimeout(self.update,300);然后在update()函数中console.log(this)为啥变成了 window对象
相似问题