task-10-snapshot-FbDKk
task-10
Основное задание
В файле
вас ждут студенты, готовые слушать лекцию:
var students = { Sam: { focus: 100, wisdom: 50 }, Sally: { focus: 100, wisdom: 60 }};
И преподаватель, который начинает лекцию и показывает первый слайд.
lecturer .on('begin', students.Sam, function () { // Внимательно случшаем преподователя this.focus += 10; })
lecturer .on('slide', students.Sam, function () { // И впитываем мудрость с каждым слайдом this.wisdom += 10; })
Студента можно подписать на событие, производимое преподавателем (например, начало лекции или показ нового слайда) — то есть указать, какая функция должна быть вызвана при наступлении этого события.
Ваша задача — реализовать несколько методов:
- подписка на событие — on
- отписка от события — off
- вызов события — emit
Вам также нужно реализовать поддержку пространства имён для событий.
lecturer.on('slide', students.Sam, function () { // Мудрость с каждым слайдом растет this.wisdom += 10;});
lecturer.on('slide.funny', daria, function () { // А иногда нет this.wisdom -= 5;});
Примеры использования можно посмотреть в index.js.
Дополнительные условия и ограничения:
- События должны возникать в том порядке, в котором на них подписывались
- На одно событие с одинаковыми объектами и обработчиками можно подписаться неограниченное количество раз. Обработчики вызываются в порядке подписки.
- Пространства имён разделены только точкой:
- на событие
произойдут событияslide.funny
иslide.funny
(именно в таком порядке)slide - на событие
произойдетslidee
, но неslideeslide - отписка от
отписывает только от негоslide.funny - отписка от
отписывает и отslide
, и отslideslide.funny
- на событие
Описание
Snapshot generated from kim-2024-2025/task-10
Языки
JavaScript