代码之家  ›  专栏  ›  技术社区  ›  barciewicz

当事件侦听器调用方法时,将类方法“this”引用切换回类实例[重复]

  •  0
  • barciewicz  · 技术社区  · 7 年前

    我有一个构造函数,它注册了一个事件处理程序:

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

    但也有同样的问题。

    如何访问正确的对象?

    0 回复  |  直到 8 年前