我有一个注册事件处理程序的构造函数:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', function () {
alert(this.data);
});
}
// Mock transport object
var transport = {
on: function(event, callback) {
setTimeout(callback, 1000);
}
};
// called as
var 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);
};
但是也有同样的问题
如何访问正确的对象?
使用bind()或使用箭头函数代替访问它。