вы хотите использовать конструктор Function
напрямую, как сказал Андерс. Все аргументы являются строками. Последний аргумент - это тело функции, любые ведущие аргументы - это имена аргументов, которые принимает функция.
Для заимствования из примера Андерса,
var multiply = new Function("x", "y", "return x * y");
будет похоже на написание
var multiply = function (x,y) {
return x * y
}
В вашем случае у вас есть "function (){ alert('meee'); }"
, и вы хотите сохранить его как функцию в var foo
.
var fn = "function (){ alert('meee'); }";
var foo = new Function("return ("+fn+")")();
foo();
// alerts "meee"
Разница между Function
и eval
в том, что eval
выполняется в частной области, тогда как Function
работает в глобальной области.
var x="haha", y="hehe";
function test () {
var x=15, y=34;
eval("alert('eval: ' + x + ', ' + y)");
new Function("alert('Func: ' + x + ', ' + y)")();
}
test();
// eval: 15, 34
// Func: haha, hehe
Не пытайтесь запустить его в консоли, вы получите обманчивый результат (консоли используют eval
). Запись в тег <script>
и загрузка его в браузер даст истинный результат.