[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: JS Hooks
RCuPeR
Всем привет!
Идея есть!
Но перед идеей задача.
Есть функция-каллбэк, которая делает одну и ту же работу, в разных участках кода, но, в зависимости от конкретного вызова результат выполнения работы должен быть разным.
Например, функция-каллбэк сборщик информации о юзере.
В одном месте мне нужно получить всю информацию об 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, да и вообще, писать логику в виде строки - прискорбно.

У кого-то есть размышления на эту тему?

_____________
Гнусный социопат с комплексом Бога.
redreem
плоди куски, которые различаются при разных вызовах. а одинаковое держи в одной функции. не понял заморочки если честно smile.gif
RCuPeR
Цитата (redreem @ 30.10.2013 - 10:33)
плоди куски, которые различаются при разных вызовах. а одинаковое держи в одной функции. не понял заморочки если честно smile.gif

Функция очень большая, а вызовов ее очень много.

Хочется сделать по-элегантней.

_____________
Гнусный социопат с комплексом Бога.
redreem
eval уж точно "не элегантно" smile.gif
кто мешает в коллбэке оставить только роутер по различным функциям, которые вызываются в зависимости от ситуации? передавай вторым параметром "тип ситуации" и все.
vital
Цитата
Функция большая и плодить ее содержимое во многих местах не хочу

Только меня это смущает?
Если у вас одна отдельная функция, то зачем плодить ее содержимое? Просто вызывайте функцию, а написана она, сам код, в одном месте. Будь то класс объект или просто функция.

А если ее содержание надо менять - то надо делать 2 функции 3....4.. А лучше один объект.

Сдается мне джс еще надо подтянуть на пару с паттернами.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.