Содержание

Object

Object(value)

Object.getOwnPropertyDescriptor(obj, name)

Object.getOwnPropertyNames(object)

Возвращает массив свойств и событий объекта object. Названия событий начинаются с #.

Object.keys(object)

Object.length

Object.clone()

Object.create(proto)

Object.defineProperties(obj, props)

Object.defineProperty(obj, name, desc)

Object.hasOwnProperty(name)

Object.toString(radix)

Object.valueOf()

События объекта

Object.emit(event[, arg1[, arg2[, ...]]])

Вызывает обработчик события event, если он был установлен, передавая аргументы arg1argN.

Object.on(event, listener)

Устанавливает обработчик listener на событие event. На одно событие можно устанавливать несколько обработчиков.

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