Например;
var s = "function test(){
alert(1);
}";
var fnc = aMethod(s);
Если это строка, мне нужна функция с именем fnc. И fnc();
всплывает экран предупреждения.
eval("alert(1);")
не решает мою проблему.
javascript
string
function
Ymutlu
источник
источник
Лучший способ создать функцию из строки - использовать
Function
:Преимуществом / недостатком этого является то, что переменные в текущей области (если не глобальные) не применяются к вновь созданной функции.
Также возможна передача аргументов:
источник
Function
вы не загрязняете локальную область видимости, и поэтомуeval
оптимизация движков настолько усложняется ... В примере с OP я быvar fnc = Function('return '+s)();
element.onclick = function() { alert("test"); }
.Вы довольно близки.
Вот рабочая скрипка .
источник
eval
предупреждение будущим поисковикам:eval
может открыть лазейки для хакеров: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ ... но если вы знаете об опасностях и можете их избежать, тогда это хороший простой способ создать функцию из строкиДа, использование
Function
- отличное решение, но мы можем пойти немного дальше и подготовить универсальный синтаксический анализатор, который анализирует строку и преобразовывает ее в настоящую функцию JavaScript ...примеры использования:
вот jsfiddle
источник
Имена динамических функций в
JavaScript
С помощью
Function
Источник: http://marcosc.com/2012/03/dynamic-function-names-in-javascript/
С помощью
eval
С помощью
sjsClass
https://github.com/reduardo7/sjsClass
пример
источник
Этот метод может быть полностью эквивалентен методу eval, но я хотел добавить его, так как он может быть полезен для некоторых.
Функционально это похоже на добавление этого элемента <script> в конец вашего документа, например:
источник
Используйте
new Function()
с возвратом внутри и выполняйте его немедленно.источник
Пример с динамическими аргументами:
источник