我有一个构造函数,它注册一个事件处理程序:function MyConstructor(data, transport) { this.data = data; transport.on('data', function () { alert(this.data); });}// Mock transport objectvar transport = { on: function(event, callback) { setTimeout(callback, 1000); }};// called asvar obj = new MyConstructor('foo', transport);但是,我无法data在回调中访问已创建对象的属性。它看起来this并不是指创建的对象,而是指另一个对象。我还尝试使用对象方法而不是匿名函数:function MyConstructor(data, transport) { this.data = data; transport.on('data', this.alert);}MyConstructor.prototype.alert = function() { alert(this.name);};但它表现出同样的问题。如何访问正确的对象?
6 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
我们不能将setTimeout()
它绑定到,因为它总是用全局对象(Window)执行,如果你想this
在回调函数中访问上下文,那么通过使用bind()
我们可以实现的回调函数:
setTimeout(function(){ this.methodName();}.bind(this), 2000);
添加回答
举报
0/150
提交
取消