回调函数中this指代问题

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();


阿波罗的战车
浏览 733回答 1
1回答

一只萌萌小番薯

atrl的方法解决了将callback函数剥离,并保持this引用的问题。在比较先进的浏览器中可以使用这种方法:c:function(){                 setTimeout(this.callback.bind(this),100);         }ie等浏览器可以自行扩展Function对象的prototype实现。但道理其实都是创建了新的函数。此处的需求这样做就可以了。有时候会碰到事件处理函数需要解耦的情况,由于还要考虑解除绑定,会更复杂一些,需要自己写对象进行管理。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript