Одна причина - разделение Вашей модели предметной области от Вашей модели базы данных.
то, Что я делаю, использовать Разработку через тестирование, таким образом, я пишу свои уровни UI и Model сначала, и уровень Data дразнят, таким образом, UI и модель являются сборкой вокруг зависящих от домена объектов, затем позже я отображаю эти объекты на то, что когда-либо технология я использую Слой Данных. Это - плохая идея позволить структуре базы данных определить дизайн Вашего приложения. Где возможная запись приложение сначала и позволила тому влиянию структура Вашей базы данных, не наоборот.
Как насчет этого?
var func = new Function('alert("hello");');
Чтобы добавить аргументы функции:
var func = new Function('what', 'alert("hello " + what);');
func('world'); // hello world
Обратите внимание, что функции являются объектами и могут быть присвоены любой переменной как есть:
var func = function () { alert('hello'); };
var otherFunc = func;
func = 'funky!';
function executeSomething(something) {
something();
}
executeSomething(otherFunc); // Alerts 'hello'
IE не может eval
выполнять функции (предположительно из соображений безопасности).
Лучшее обходной путь - поместить функцию в массив, например:
var func = eval('[' + funcStr + ']')[0];
Попробуйте
var funcStr = "var func = function() { alert('hello'); }";
eval(funcStr);
func();
Используйте eval следующим образом:
var func = eval('(' + funcStr + ')');
Также работает
var myFunc = function(myParam){
// function body here
}