Возвращает массив свойств и событий объекта object
. Названия событий начинаются с #
.
Вызывает обработчик события event
, если он был установлен, передавая аргументы arg1
…argN
.
Устанавливает обработчик listener
на событие event
. На одно событие можно устанавливать несколько обработчиков.
Удаляет все обработчики событий.
/** * Объект Car должен двигаться, не превышая скорость limitSpeed * При превышении скорости beltSpeed, ремень безопасности должен * быть пристегнут. */ var Car = function(beltSpeed, limitSpeed){ this.beltSpeed = beltSpeed; this.limitSpeed = limitSpeed; this.curSpeed = 0; this.beltLock = false; var self = this; setInterval(function(){ if (!self.beltLock && self.curSpeed > self.beltSpeed) { self.emit('belt', self.curSpeed, self.beltSpeed); } if (self.curSpeed > self.limitSpeed) { self.emit('limit', self.curSpeed, self.limitSpeed); } }, 1000); }; /** * Устанваливаем состояние ремня безопасности: * true - пристегнут, false - нет */ Car.prototype.belt = function(lock) { this.beltLock = lock; }; /** * Устанавливаем текущую скорость */ Car.prototype.speed = function(speed) { this.curSpeed = speed; }; // Создаем новый объект var auto = new Car(20, 80); // Если наступило событие belt auto.on('belt', function(){ print('Lock seat belt'); }); // Если наступило событие limit auto.on('limit', function(curSpeed, limitSpeed) { print('Speed limit ', limitSpeed, '. You drive speed', curSpeed); });
Нижеследующие команды, выполняйте в консоле, после запуска кода, приведенного выше.
/** * Запустите код, приведенный выше. * Для удобства управления, нижеследующие команды запускайте в консоли, */ auto.speed(30); /** * Разогнали машину до 30 (без ремня можно до 20). * Каждую секунду в консоле будет отображаться строка: * Lock seat belt */ auto.belt(true); /** * Пристегнули ремень и скорость 30. * Ни одно событие не наступает. */ auto.speed(90); /** * Превысили разрешенную скорость. * В консоле отображается строка: * Speed limit 80 . You drive speed 90 */ auto.belt(false); /** * Отстегнули ремень в машине, движущийся с превышением. * В консоле отображаются строки: * Lock seat belt * Speed limit 80 . You drive speed 90 */ auto.removeAllListeners('limit'); /** * Убрали обработчики превышения максимальной скорости. * В консоле отображается: * Lock seat belt */ auto.removeAllListeners(); /** * Убрали вообще все обработчики. * В консоле ничего не отображается. */