====== 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();
/**
* Убрали вообще все обработчики.
* В консоле ничего не отображается.
*/