Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2015, 14:09
Интересующийся
Отправить личное сообщение для sexbot Посмотреть профиль Найти все сообщения от sexbot
 
Регистрация: 09.05.2015
Сообщений: 27

Собственные события: как бы вы переписали этот код
function Signal() {
  this.handlers = [];
}

Signal.prototype.connect = function (handler) {
  if (this.handlers.indexOf(handler) == -1) {
    this.handlers.push(handler);
  }
};

Signal.prototype.disconnect = function (handler) {
  var index = this.handlers.indexOf(handler);

  if (index == -1) { 
    throw new Error("handler hasn't been connected");
  } else {
    var temp = [];

    for (var i = 0; i < this.handlers.length; ++i) {
      if (i == index) continue;
      temp.push(this.handlers[i]);
    }
    
    this.handlers = temp;
  }
};

Signal.prototype.emit = function () {
  var args = Array.prototype.slice.call(arguments);
  
  for (var i = 0; i < this.handlers.length; ++i) {
    this.handlers[i].apply(null, args);
  }
};

Signal.prototype.clearHandlers = function () {
  this.handlers = [];
};

function notify(user, message) {
  console.log('%s recieved message: %s', user, message);
};

var signal = new Signal();

signal.connect(notify);
signal.emit("John", "PHP is sucks");
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2015, 17:39
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Для начала, превратил бы его в гламурный ES6..
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2015, 23:30
Интересующийся
Отправить личное сообщение для sexbot Посмотреть профиль Найти все сообщения от sexbot
 
Регистрация: 09.05.2015
Сообщений: 27

А если по существу? Ну ясно, что там Map можно использовать вместо массива (что сразу делает код несовместимым со всякими ишаками).
Ответить с цитированием
  #4 (permalink)  
Старый 10.05.2015, 08:12
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Ну ясно, что там Map можно использовать вместо массива (что сразу делает код несовместимым со всякими ишаками).
Используй babel и все будет прекрасно совместимо. Ну или хотя бы core-js подключай.

Цитата:
PHP is sucks
is - это "есть". Надо просто PHP sucks.

Последний раз редактировалось Erolast, 10.05.2015 в 08:14.
Ответить с цитированием
  #5 (permalink)  
Старый 10.05.2015, 13:48
Интересующийся
Отправить личное сообщение для sexbot Посмотреть профиль Найти все сообщения от sexbot
 
Регистрация: 09.05.2015
Сообщений: 27

Сообщение от Erolast Посмотреть сообщение
Используй babel и все будет прекрасно совместимо. Ну или хотя бы core-js подключай.


is - это "есть". Надо просто PHP sucks.
но зачем они?
Ответить с цитированием
  #6 (permalink)  
Старый 10.05.2015, 14:20
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
но зачем они?
Чтобы все было
Цитата:
прекрасно совместимо
со старыми ишаками.
Ответить с цитированием
  #7 (permalink)  
Старый 10.05.2015, 14:36
Интересующийся
Отправить личное сообщение для sexbot Посмотреть профиль Найти все сообщения от sexbot
 
Регистрация: 09.05.2015
Сообщений: 27

Сообщение от Erolast Посмотреть сообщение
Чтобы все было

со старыми ишаками.
но зачем мне лишние 100500 байт ради реализации Map? Вот в моем коде что-нибудь можно более элегантно переписать?
Ответить с цитированием
  #8 (permalink)  
Старый 10.05.2015, 18:19
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Для начала, превратить в гламурный ES6.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подгрузить код JS динамически? zhurchik Общие вопросы Javascript 22 02.02.2015 14:16
Аккордеон меню, как доработать код. Gawk Общие вопросы Javascript 1 23.07.2012 13:01
подскажите с eval, как обработать код? czp Общие вопросы Javascript 7 13.05.2012 20:37
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 15:15
Как заставить this в обработчике события указывать на объект? Dmitryk Events/DOM/Window 3 16.03.2009 08:45