В настоящее время я работаю над «шпионом» для других функций. Идея довольно проста: я просто заменяю вызов исходной функции этой оригинальной функцией плюс приращение счетчика.Реализация функции - шпион
Проблема в том, что мой счетчик виден только во внутренней области. Как я могу открыть его для свойства объекта?
function Spy(target, method){
this.count = 0;
var counter = 0;
target[method] = (function() {
return function() {
++ counter;
this.count = counter;
console.log(counter);
return target[method];
};
})();
}
var spy = new Spy(console, 'error');
console.error('error1'); // prints 1, but not 'error1'
console.error('error2'); // prints 2, but not 'error2'
console.error('error3'); // prints 3, but not 'error3'
console.log(spy.count); // prints 0