为了账号安全,请及时绑定邮箱和手机立即绑定

回调函数中this指代问题

回调函数中this指代问题

阿波罗的战车 2018-08-21 10:09:54
var obj = { //我想让this指代上面这个obj a:function(){ setTimeout(function(){ console.log(this); },100); }, //好吧,曲折解决了 b:function(){ var me = this; setTimeout(function(){ console.log(me); },100); }, //如果我要把callback拿出来,又有问题了。。。 c:function(){ //这下不管我怎么在c和callback里倒来倒去的找变量,都不能在callback里找到最上面的那个obj了。。 setTimeout(this.callback,100); }, callback:function(){ console.log(this);//我需要在这里找到obj.. } }; obj.a();//obj.b();//obj.c();
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

atrl的方法解决了将callback函数剥离,并保持this引用的问题。
在比较先进的浏览器中可以使用这种方法:

c:function(){
                setTimeout(this.callback.bind(this),100);
        }

ie等浏览器可以自行扩展Function对象的prototype实现。但道理其实都是创建了新的函数。

此处的需求这样做就可以了。有时候会碰到事件处理函数需要解耦的情况,由于还要考虑解除绑定,会更复杂一些,需要自己写对象进行管理。


查看完整回答
反对 回复 2018-09-14
  • 1 回答
  • 0 关注
  • 732 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信