Как сделать callback события для конструктора функции?

Добрый день, Тостер!

Имеется простая функция конструктор и несколько методов:
function iRead(item, options) {
 this.item = $(item);
 this.options = options;
 ...
}

iRead.prototype.read = function() {
 this.item.addClass('read');
};

iRead.prototype.unread = function() {
 this.item.removeClass('read');
};

var x = new iRead('#news-1');
x.read();


Интересует как сделать callback событие для методов read() и unread();

То есть чтобы можно было делать что-то вроде:
x.on('newsRead', function() {
 // Code
});

x.on('newsUnread', function() {
 // Code
});
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
twobomb
@twobomb
function iRead(item, options) { 
....
  this._events_read = [];
  this._events_unread = [];
  this.on = function(evt,func){
    switch(evt){
      case "newsRead":
        this._events_read.push(func);
      break;
      
      case "newsUnread":
        this._events_unread.push(func);
      break;
    }
  }
}

iRead.prototype.read = function() {
 this.item.addClass('read');
 this._events_read.map(function(e){e();});
};

iRead.prototype.unread = function() {
 this.item.removeClass('read');
 this._events_unread.map(function(e){e();});
};

var s = new iRead();
s.on("newsRead",function(){alert("readed!")});
s.on("newsUnread",function(){alert("unreaded!")});
s.read();//readed
s.unread();//unreaded
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы