Javascript-如何从内部异步函数调用内部类函数?

时间:2020-02-05 12:55:34

标签: javascript

我正在编写一个简单的js类,用于查找div并将img标记注入到其中。

如果用户单击div,则需要调用内部函数 stop()

class PreDS {

constructor() {
    console.log("[PreDS] constr")
    this._el = document.querySelector(".imgOrari")
    if (this._el){
        this._el.innerHTML = "<img id='imgOrariImg'>";
        this._el.onclick =
            function(){
                console.log("[PreDS] click _el")
-->             stop("click")
            }
    }
    else console.error("class imgOrari not found")
}


stop(){
...
}

问题是这样定义的 onclick 处理程序不在对象的上下文中,因此该函数为 undefined

如何调用该功能?

1 个答案:

答案 0 :(得分:1)

使用ES6的粗箭头功能传输上下文,而不创建像ES5的function()这样的新功能。另外,您需要使用this.stop()而不是stop()

this._el.onclick = () => {
                console.log("[PreDS] click _el")
                this.stop("click")
            }