Вопрос новичка о document.addEventListener ('mousemove', function (e) { - PullRequest
1 голос
/ 09 мая 2011

Хорошо:

document.addEventListener('mousemove', function (e) {...code...}, false);

Недавно я понял, что могу значительно улучшить свое взаимодействие с несколькими веб-сайтами с помощью расширений Chrome, чтобы изменить порядок и переписать веб-сайт в соответствии с моими потребностями.

Итак, я пытался понять расширения Chrome, JavaScript, CSS, DOM, JQuery и HTML.Это огромная тема, и я ужасно незнаком с веб-технологиями.

Может кто-нибудь объяснить, что такое «function (e) {... code ...}» в этом контексте?

Это встроенная функция без имени?Таким образом, в отличие от других языков, вместо создания функции с именем и последующего ее вызова при необходимости, этот оператор перехватывает движение мыши с помощью неназванной функции?

Полагаю, что глупо задавать вопрос, в чем выгодачтобы иметь встроенную безымянную функцию?

Ответы [ 3 ]

4 голосов
/ 09 мая 2011

function (e) {...code...} - это ссылка на анонимную функцию, которая запускается при возникновении события mousemove.Параметр e - это объект события, который отправляется вместе с самим событием.

В общем, вы говорите: каждый раз, когда кто-то перемещает свою мышь где-то в объекте DOM document, выполняйте функцию, используяОбъект события, который я даю вам в параметре этой функции.

Вы могли бы также использовать (и это иногда рекомендуется для удобства чтения и ясности):

function mousemover(e){ ... }
document.addEventListener('mousemove', mousemover, false);

Это также предпочтительныйКстати, если позже вы решите удалить обработчик событий (removeEventListener).

Встроенную анонимную функцию иногда называют лямбда-функцией .Вы можете прочитать об этом в этом SO Вопросе .

Согласно запросу в комментариях: в функциях javascript есть объекты первого класса .В частности, это означает, что язык поддерживает передачу функций в качестве аргументов другим функциям, возврат их в качестве значений из других функций и присвоение их переменным или сохранение их в структурах данных (цитируется с на этой странице Википедии ).Также читайте больше на странице Дугласа Крокфордса .

1 голос
/ 09 мая 2011

Встроенные (анонимные) функции - это просто стиль, позволяющий сократить код.Они также могут избежать загрязнения пространства имен, вводя ненужные имена в текущую область.

Однако в данном конкретном случае есть недостаток в том, что невозможно удалить определенного прослушивателя событий, если он былдобавлено анонимно.

1 голос
/ 09 мая 2011

Они называются анонимными функциями.

Подробнее о них можно прочитать здесь:

http://en.wikipedia.org/wiki/Anonymous_function#JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...