'is not a function' 在同一个构造函数中调用一个方法 (JS)

'is not a function' on calling an method within the same constructor function (JS)

我想在同一个方法中调用一个方法 class。

function Dialog() {

this.close = function() {
    //code
};

this.dialog = document.createElement("div");
this.dialog.onclick = function() {
    this.close();
}
document.body.appendChild(this.dialog);
}

var test = new Dialog();

我搜索了答案,但没有任何帮助:当我单击 div.

时,我的浏览器控制台中仍然显示 TypeError: this.close is not a function

当您使用 function() { ... } 时,它会在函数内部更改 this 的内容。您需要将函数绑定到 this 或使用箭头函数 () => { ... }.

使用绑定:

var handleClick = function() {
    this.close();
};

this.dialog.onclick = handleClick.bind(this)

使用箭头函数:

this.dialog.onclick = () => {
    this.close();
}

尝试使用 close(){} 而不是 this.close = function(){}。请参阅下面的示例。

function Dialog() {
    close(){
        //code
    };

    this.dialog = document.createElement("div");
    this.dialog.onclick = function() {
        this.close();
    }

    document.body.appendChild(this.dialog);
}

var test = new Dialog();