Функция подсчета вызовов - PullRequest
       5

Функция подсчета вызовов

5 голосов
/ 30 августа 2011

Я новичок в JavaScript, поэтому наберитесь терпения =)

Я пытаюсь написать функцию, которая подсчитывает, сколько раз она вызывается.Пока у меня есть функция со счетчиком, который явно увеличивается:

var increment = function () {
    var i = 0;
    this.inc = function () {i += 1;};
    this.get = function () {return i;};
};

var ob = new increment();
ob.inc();
ob.inc();
alert(ob.get());

Но мне интересно, как вызывать только ob();, чтобы функция могла автоматически увеличивать количество вызовов, сделанных для себя.Возможно ли это, и если да, то как?

Ответы [ 3 ]

8 голосов
/ 30 августа 2011
var increment = function() {
    var i = 0;
    return function() { return i += 1; };
};

var ob = increment();
1 голос
/ 14 марта 2017
ob = function f(){  
  ++f.i || (f.i=1);   // initialize or increment a counter in the function object
  return f.i; 
}
0 голосов
/ 11 ноября 2018

Завернуть счетчик в любую функцию:

/**
 * Wrap a counter to a function
 * Count how many times a function is called
 * @param {Function} fn Function to count
 * @param {Number} count Counter, default to 1
 */
function addCounterToFn(fn, count = 1) {
  return function () {
    fn.apply(null, arguments);
    return count++;
  }
}

См. https://jsfiddle.net/n50eszwm/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...