Здравствуйте.
Есть такой пример:
class Dropdown() {
// перенести сюда метод toggle
}
class Nav extends Dropdown {
constructor(selector) {
super();
this.$el = document.querySelector(selector);
this.$btn = this.$el.querySelector('.nav-button');
this.$btn.addEventListener('click', this.toggle.bind(this));
}
toggle() {
this.$el.classList.toggle('nav_open');
}
// this.$el и this.$btn будут использоваться в других методах класса Nav
}
class Menu extends Dropdown {
constructor(selector) {
super();
this.$el = document.querySelector(selector);
this.$btn = this.$el.querySelector('.menu-button');
this.$btn.addEventListener('click', this.toggle.bind(this));
}
toggle() {
this.$el.classList.toggle('menu_open');
}
// this.$el и this.$btn будут использоваться в других методах класса Menu
}
new Nav('.nav');
new Menu('.menu');
У меня есть два класса для навигации и меню. Они хоть и отличаются, но имеют много похожих частей кода. Например, метод toggle делает одно и то же, но оперирует разными кнопками и css-классами, поэтому я хочу перенести его в Dropdown.
Собственно вопрос: каким образом внутри Dropdown получить доступ к нужной кнопке и css-класу? Передавать их внутри
super()? Но на момент вызова они еще не объявлены.