дошел до последней главы функций и на удивление благодаря вашим подсказкам много нового узнал=)
но возник вопрос по последнему уроку
Декораторы
http://learn.javascript.ru/decorators
вот к примеру есть код
function work(a) {
/* ... */ // work - произвольная функция, один аргумент
}
function makeLogging(f, log) {
return function (a){
log.push(a);
f.call(null,a);
}
}
var log = [];
work = makeLogging(work, log);
work(1); // 1, добавлено в log
work(5); // 5, добавлено в log
for(var i=0; i<log.length; i++) {
alert( 'Лог:' + log[i] ); // "Лог:1", затем "Лог:5"
}
в общем код просто но вот чего не могу понять
return function (a){
log.push(a);// это понятно добавление в массив лог
return f.call(null,a); // но смысел от этой сточки? и без нее работает
}
вот код решение задачи из учебника (выше это мое ришение)
function work(a) {
/*...*/ // work - произвольная функция, один аргумент
}
function makeLogging(f, log) {
function wrapper(a) {
log.push(a);
return f.call(this, a);
}
return wrapper;
}
var log = [];
work = makeLogging(work, log);
work(1); // 1
work(5); // 5
for(var i=0; i<log.length; i++) {
alert( 'Лог:' + log[i] ); // "Лог:1", затем "Лог:5"
}