Показать сообщение отдельно
Старый 25.09.2015, 18:54
amesqit вне форума Посмотреть профиль Отправить личное сообщение для amesqit Найти все сообщения от amesqit
  № 14  
Ответить с цитированием
amesqit
 
Аватар для amesqit

Регистрация: Oct 2007
Сообщений: 255
Записей в блоге: 1
С событиями разобраться довольно просто. У нас есть 2 объекта Исполнитель и Заказчик. Заказчик нанимает исполнителя на определенную работу и знает о нем только то что он ее делает. Исполнитель не знает о заказчике ничего, для него работа и есть работа, пришло задание и он его делает. Нам надо дать знать Заказчику, что Исполнитель выполнил задание таким образом, чтобы Заказчик не стоял рядом с Исполнителем следя за каждым его шагом, а также чтобы Исполнитель после выполнения заказа не бежал искать заказчика чтобы передать ему результат, т.к. это выходит за пределы их роли, вот тут на помощь приходят события. Функция addEventListener - Исполнитель рядом со своей мастерской вешает корзину, на которой написано название события "Окончание работы" и Заказчик кидает туда конверт в котором содержится обработчик этого события. Функция dispatchEvent - Исполнитель завершая работы над заданием подходит к этой корзине и распечатывает конверты по очереди запуская обработчики событий. Функция removeEventListener - если заказчик вдруг решит по какой-то причине умереть, то ему желательно забрать свой конверт у Исполнителя, чтобы тот не пытался вызывать обработчик мертвого Заказчика, т.к. о Заказчике ничего не известно кроме его обработчика, так же забрать конверт надо, если результат просто перестает интересовать. Пользовательские события - это та же корзина, но принимать она может только оговоренные коробки, бандероли и другие предметы рассчитанные на результат выполненной работы, чтобы корректно выполнился обработчик, т.к. этот обработчик ждет результат строго определенного вида. Надеюсь это сочинение упростит понимание, а не запутает
__________________
ответ прост: be || !be == true