====== Object ====== class:: Object(value) func:: Object.getOwnPropertyDescriptor(obj, name) func:: Object.getOwnPropertyNames(object) Возвращает массив свойств и событий объекта ''object''. Названия событий начинаются с ''#''. func:: Object.keys(object) prop:: Object.length meth:: Object.clone() meth:: Object.create(proto) meth:: Object.defineProperties(obj, props) meth:: Object.defineProperty(obj, name, desc) meth:: Object.hasOwnProperty(name) meth:: Object.toString(radix) meth:: Object.valueOf() ==== События объекта ==== meth:: Object.emit(event[, arg1[, arg2[, ...]]]) Вызывает обработчик события ''event'', если он был установлен, передавая аргументы ''arg1''...''argN''. meth:: Object.on(event, listener) Устанавливает обработчик ''listener'' на событие ''event''. На одно событие можно устанавливать несколько обработчиков. meth:: Object.removeAllListeners(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(); /** * Убрали вообще все обработчики. * В консоле ничего не отображается. */