3
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;
  }
}

Хотел узнать, как работает код выше, разобрался, но пока не совсем точно, в коде есть мои комментарии, вот мои вопросы:

  1. не знаю, как работает первый this.input, передаёт объекту, для которого используется конструктор что?

  2. при изменении объекта делает что? тоже не понимаю

  3. функцию onChange не понимаю всю

  4. задавая этот вопрос понял, что не могу найти нигде понятного мне применения или объяснения применения методов типа input и onchange

Grundy
  • 81,538
  • 3
    "не понимаю" - неудивительно, код неправильный –  Aug 27 '18 at 14:20
  • @Igor наверно дело в том, что это только кусок кода? или даже в этом куске есть ошибки? я просто хотел понять, как работает конкретно эта часть – Ivan Burilichev Aug 27 '18 at 14:41
  • И в этом куске кода есть ошибка. У вас столько вопросов, что тянет на написание небольшой книги) Совет. Что бы понять, что код делает - выполните его под дебагом. На каждом шаге смотрите, что происходит, на что ссылается this, чему равны переменные.... В общем, изучайте! – Stepan Kasyanenko Aug 27 '18 at 14:52
  • @grundy здесь был хороший ответ, который я просто не успел пометить как нужный, а теперь я не могу его найти( – Ivan Burilichev Aug 27 '18 at 17:00
  • @IvanBurilichev, его удалил сам автор ответа. – Grundy Aug 27 '18 at 17:00
  • @grundy есть возможность вернуть этот ответ? он был очень полезным – Ivan Burilichev Aug 27 '18 at 17:33
  • @IvanBurilichev, можешь попробовать поставить тревогу на свой вопрос и описать модераторам в чем проблема. либо можешь просто набрать 10000 репутации и сможешь видеть удаленные вопросы и ответы – Grundy Aug 27 '18 at 17:36

2 Answers2

1
  1. Конструктор передает начальные значения для переменных класса. В этом коде не хватает инициализации переменной input
  2. При изменении input срабатывает функция onChange(), причем не стандартная, а та, которая прописана внутри класса, а делает она вот что:
    1. В переменную inputValue (которую, кстати, тоже нужно предварительно инициализировать) записывается текущий event.target
    2. В переменную updateTime (и ее нужно проинициализировать) записывается текущее время
    3. Результатом работы функции является значение переменной inputValue
  3. input - это не метод, а Node-объект. Конкретно этот код и мне не понятен, для чего может пригодиться, но вообще подобные конструкции применяются для создания api к каким-нибудь библиотекам, чтобы иметь возможность манипулировать состоянием работы библиотеки на основании пользовательских событий или событий работы библиотеки.
  • Во всём коде из вопроса нет ни одной переменной. А ответ не отвечает на вопрос. Тем более, что код в нём делает не то, что кажется, а у тебя об этом ни слова. – Qwertiy Aug 27 '18 at 15:55
  • @Qwertiy поэтому я и написал, что переменные сначала нужно проинициализировать. Или это с задачника какого-то? – Егор Жолнин Aug 27 '18 at 15:57
  • Переменных там нет. 2. То, что ты хочешь инициализировать, называется полями или свойствами. 3. Формально, инициализировать их необязательно. 4. Даже если их инициализировать, то ты всё равно хочешь их инициализировать не в том объекте, которому они в дальнейшем присваиваются. 5. В вопросе спрашивается как работает this, но в ответе он не упоминается.
  • – Qwertiy Aug 27 '18 at 15:59