我正在尝试为当前项目上的交互式日历编写ES6类。ES6类 - 从事件处理程序中调用方法
的Class看起来类似于下面:
class Calendar {
constructor (s) {
this.eventButtons = s.eventButtons;
this.eventButtons.forEach(button => button.addEventListener('click', this.method1);
this.eventBoxes = s.eventBoxes;
method1 (e) {
e.preventDefault();
this.method2(e.target.href);
}
method2 (url) {
console.log(url);
}
}
export default Calendar;
我知道,“这个”关键字的上下文从构造改为已被点击方法1函数内的按钮。但是我不知道如何保持按钮和构造函数的上下文在同一个函数中。我尝试将按钮事件监听器代码更改为以下代码:
this.eventButtons.forEach(button => button.addEventListener('click', this.method1).bind(this);
但是,这只是将“this”关键字的上下文切换到构造函数而不是按钮。我需要在我的功能中使用两者。
任何想法?我希望这是一个很常见的问题?
的[无法调用它在ES6在Node.js的限定它的一类内的方法](可能的复制https://stackoverflow.com/questions/39621821/cannot-call-a-method-within- a-class-it-defined-it-in-es6-in-node-js) – noahnu