Есть ли надстройка над конструктором, чтобы при вызове метода из прототипа перед этим вызывалась какая либо функция?

Например есть конструктор и пару протопитов:
module.exports = new Quick;

function Quick() {
	this.task = [];
}

Quick.prototype.sync = function() {
	this.task.push('sync')
}

Quick.prototype.js = function() {
	this.task.push('js')
}

Quick.prototype.mocha = function() {
	this.task.push('mocha')
}


И Каждый метод добавляет название себя в массив;
Могу ли я сделать функцию которая вызывается перед визовом метода (что би не повторять одинаковый код в методах) ?
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
@iShatokhin
JS developer
function Quick() {
  var self = this;
  self.task = [];
  Object.keys(self.constructor.prototype).forEach(function (key) {
    var orig = self.constructor.prototype[key];
    self.constructor.prototype[key] = function () {
      self.task.push(key);
      return orig.apply(self, arguments);
    };
  }; 
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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