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

标签 javascript

我正在编写一个简单的 js 类,它查找 div 并向其中注入(inject) 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 处理程序不在对象的上下文中,因此该函数未定义

如何调用该功能?

最佳答案

使用 ES6 的胖箭头函数来传输上下文,而不是像 ES5 的 function() 那样创建新函数。此外,您还需要使用 this.stop() 而不仅仅是 stop()

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

关于Javascript - 如何从内部异步函数调用内部类函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076327/

相关文章:

javascript - 使用 Google Scripts 应用删除两个重复的行

javascript - 灯箱未加载动态选择器

javascript - 使用 jQuery 延迟图像加载

javascript - 当您使用 jquery 更改 img 标签的 src 时会发生什么?

javascript - 使用 Google Analytics 跟踪单页视频流的实时统计数据

javascript - 防止 window.opener.location.href 表单重新加载父级

javascript - React Progress Bar - 当计数大于 100 时在单个栏上添加附加类

javascript 在输入字段上添加两个多重事件

javascript - 在运行时检测 javascript 文本或元素溢出

javascript - 在 Meteor 中插入抓取的内容(通过 Cheerio)时出现问题