代码之家  ›  专栏  ›  技术社区  ›  Jacques Amsel

`在类[duplicate]的函数中未定义

  •  0
  • Jacques Amsel  · 技术社区  · 6 年前

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

    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 回复  |  直到 7 年前