Javascript 如何访问es6类构造函数中单击事件的方法?

Javascript 如何访问es6类构造函数中单击事件的方法?,javascript,ecmascript-6,Javascript,Ecmascript 6,我创建了一个类来管理与我的应用程序的主UI交互。在构造器中,我想连接nav li的点击事件。有人能帮我弄清楚如何正确地确定这些对象的范围吗 class app { constructor() { $('.nav li').on("click", function() { // I want to call changeView but pass in the data attribute from the li as the view para

我创建了一个类来管理与我的应用程序的主UI交互。在构造器中,我想连接nav li的点击事件。有人能帮我弄清楚如何正确地确定这些对象的范围吗

class app {
    constructor() {

        $('.nav li').on("click", function() {
            //  I want to call changeView but pass in the data attribute from the li as the view param
            //  ex.  changeView($(this).data('view'));
        });

    }

    changeView(view) {
        console.log(view);
    }
}

我相信如果您使用ES6箭头功能,这将起作用

class app {
    constructor() {
        $('.nav li').on("click", () => {
            //  I want to call changeView but pass in the data attribute from the li as the view param
            this.changeView($(this).data('view'));
        });
    }

    changeView(view) {
        console.log(view);
    }
}

我相信如果您使用ES6箭头功能,这将起作用

class app {
    constructor() {
        $('.nav li').on("click", () => {
            //  I want to call changeView but pass in the data attribute from the li as the view param
            this.changeView($(this).data('view'));
        });
    }

    changeView(view) {
        console.log(view);
    }
}
使用箭头功能:

$('.nav li').on("click", e => {
    this.changeView($(e.target).data('view'));
});
使用箭头功能:

$('.nav li').on("click", e => {
    this.changeView($(e.target).data('view'));
});

ES6中的问题与ES5中的问题没有什么不同。问题是相同的,但解决方案是不同的,因为我们有了箭头函数。我们现在有了一个优雅的解决方案来解决“this”范围问题。ES6中的问题与ES5中的问题没有什么不同。问题是相同的,但解决方案不同,因为我们有了箭头函数。我们现在有了一个优雅的解决方案来解决“这个”范围问题。这正是我想要的。谢谢这正是我要找的。谢谢这不起作用,因为没有在任何地方定义
changeView
。这不起作用,因为没有在任何地方定义
changeView