这在函数内部函数中是未定义的

时间:2018-04-25 09:35:55

标签: javascript object scope

我有以下js代码段(与原版略有简化),我无法弄清楚为什么我为TypeError: this is undefined行获得了this.onError(event.error.message)。我知道this在范围内无效,但我无法理解为什么。

如何在不必将onError传递给initialize()方法的情况下解决此问题?

class Class1{

    constructor(props) {
        this.class2 = Class2(props.publicKey);
        this.onError = props.onError;
    }

    //initialize the form
    initialize() {

        //add error handler
        this.class2.addEventListener("change", function (event) {
            if (event.error) {
                this.onError(event.error.message);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

this上下文分配给变量并在回调函数中使用它:

initialize() {
    var that = this;
    //add error handler
    this.class2.addEventListener("change", function (event) {
        if (event.error) {
            that.onError(event.error.message);
        }
    });
}