На данный вопрос уже ответили:
class dateInput {
constructor() {
this.input = document.querySelector(".input");
/* присваивает передаваемому в конструктор объекту .input?? =
выбирает первый элемент с классом .input в документе*/
this.input.onChange = this.onChange;
}
onChange(event) {
this.inputValue = event.srcElement.value;
this.updateTime = new Date();
return this.inputValue;
}
}
Хотел узнать, как работает код выше, разобрался, но пока не совсем точно, в коде есть мои комментарии, вот мои вопросы:
не знаю, как работает первый this.input, передаёт объекту, для которого используется конструктор что?
при изменении объекта делает что? тоже не понимаю
функцию onChange не понимаю всю
задавая этот вопрос понял, что не могу найти нигде понятного мне применения или объяснения применения методов типа input и onchange
class dateInput {
constructor() {
/* выбирает первый элемент с классом .input в документе */
this.input = document.querySelector(".input");
this.input.onchange = this.onChange.bind(this); // not this.input.onChange
}
onChange(event) {
// теперь (после добавления .bind(this) в конструкторе) this здесь -
// объект типа dateInput, чей метод используется в качестве обработчика
this.inputValue = event.srcElement.value;
this.updateTime = new Date();
//return this.inputValue; - meaningless
console.log(this);
}
}
var a = new dateInput();
console.log(a);
<input class="input" />
Конструктор передает начальные значения для переменных класса. В этом коде не хватает инициализации переменной inputinput срабатывает функция onChange(), причем не стандартная, а та, которая прописана внутри класса, а делает она вот что:
inputValue (которую, кстати, тоже нужно предварительно инициализировать) записывается текущий event.targetupdateTime (и ее нужно проинициализировать) записывается текущее времяinputValueinput - это не метод, а Node-объект. Конкретно этот код и мне не понятен, для чего может пригодиться, но вообще подобные конструкции применяются для создания api к каким-нибудь библиотекам, чтобы иметь возможность манипулировать состоянием работы библиотеки на основании пользовательских событий или событий работы библиотеки.Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости