ru.javascript.info icon indicating copy to clipboard operation
ru.javascript.info copied to clipboard

вопросы по задаче№2 "Умная подсказка"

Open Lui-Davi opened this issue 3 years ago • 0 comments

Здравствуйте, в авторском решении задачи№2 "Умная подсказка" в разделе: "Интерфейсные события", тема: "Движение мыши: mouseover/out, mouseenter/leave" по-моему есть ряд неточностей, которые сбивают меня с толку как начинающего изучать программирование. А именно:

  1. В функции trackSpeed() {}, есть строка: this.over.call(this.elem, event); т.е. функция over(){}, вызывается в контексте elem, но в функции over(){} не используются переменные с this и соответственно вызов this.over() работает с тем же успехом, что и вызов this.over.call(this.elem, event);. Да и причем тут контекст this.elem, ведь у elem нет свойств, которые могли бы использоваться в функции over(){}. Более понятен был бы контекст созданного объекта вызовом new HoverIntent();
  2. В обработчике onMouseOut(event){} есть проверка if (!event.relatedTarget ||...В чем смысл этой проверки? Ведь во-первых провеки: if ( !elem.contains(event.relatedTarget)) достаточно, а во-вторых event.relatedTarget всегда вернет true, даже когда курсор сходит на html(т.е. на document.documentElement);
  3. Для чего нужны переменные this.prevTime и this.lastTime, т.е. для чего наv нужно знать стоял курсор или нет? Нам просто нужно знать скорость за прошедшие 100ms и если она меньше 0,1(а 0<0.1) срабатывает over(){} и подсказка всплывает. Я хочу сказать, что случай остановки курсора(скорость 0) и так прекрасно обрабатывается проверкой: if (speed < this.sensitivity) . Если я обратился не по адресу, подскажите пожалуйста как получить ответы на эти вопросы.

Lui-Davi avatar Oct 24 '21 14:10 Lui-Davi