Javascript 对ES6中的类使用jQuery

Javascript 对ES6中的类使用jQuery,javascript,jquery,ecmascript-6,Javascript,Jquery,Ecmascript 6,我的新项目遇到了一个小问题。基本上,作为页面的一部分,有一个帖子页面和一些来自后端的评论。我想做的就是为这些提供一些JavaScript逻辑。我所做的是: class Comment { constructor(comment) { console.log("Creating comment object..."); $(comment).find(".vote").click(this.toggle_vote); $(comment).f

我的新项目遇到了一个小问题。基本上,作为页面的一部分,有一个帖子页面和一些来自后端的评论。我想做的就是为这些提供一些JavaScript逻辑。我所做的是:

class Comment {
    constructor(comment) {
        console.log("Creating comment object...");
        $(comment).find(".vote").click(this.toggle_vote);
        $(comment).find(".action.reply").click(this.toggle_reply);
    }

    toggle_vote() {
        // Context here is `span.reply`, not Comment instance,
        // but I want to access class members
        if ($(this).is(".voted")) {
            $(this).removeClass("voted");
            return;
        }

        $(this).addClass("voted");
        $(this).siblings().first().removeClass("voted");
    }

    // ...
}
下面的问题在于jQuery回调样式。当我将类成员传递给jQuery回调时,在调用时,jQuery模拟其上下文,因此
这个
span.reply
,而不是
Comment
实例。关键是我希望能够访问实际的注释实例


免责声明:我根本不是前端人员,所以我可能需要一些严格的解释来解决这个问题,谢谢

您可以使用.bind为函数定义this对象

就你而言

.click(this.toggle_vote.bind(this))

这与使用ES6类语法无关。顺便说一句,您的
toggle\u vote
函数似乎期望
This
是DOM元素?@Bergi嗯,它是atm,但我希望它的行为方式不同。我听说过ES6中的“=>”语法,它在这里会起作用吗?是的,你可以使用
…单击((e)=>this.toggleReply(e.currentTarget))
左右。我可以用ES6“=>”语法绑定它吗,比如:
。单击((事件)=>this.toggle\u vote)