Идея есть!
Но перед идеей задача.
Есть функция-каллбэк, которая делает одну и ту же работу, в разных участках кода, но, в зависимости от конкретного вызова результат выполнения работы должен быть разным.
Например, функция-каллбэк сборщик информации о юзере.
В одном месте мне нужно получить всю информацию об N количестве пользователей, а в другом месте, мне нужно фильтровать по какому-то признаку или условию.
Функция большая и плодить ее содержимое во многих местах не хочу, по-этому и оформил в отдельный метод объекта.
Думаю, проблема понятна: как заставить менять поведение функции в зависимости от места вызова.
Теперь идея!
Использовать eval для изменения логики выполнения функции.
Например:
function foo(num, hook)
{
var n = 5;
if (hook)
{
return eval(hook);
}
else
{
return n + num;
}
}
var hook = '((n + num) * num)';
foo (3);
foo (3, hook);
Смущает использование eval, да и вообще, писать логику в виде строки - прискорбно.
У кого-то есть размышления на эту тему?
_____________
Гнусный социопат с комплексом Бога.