Ответ 1
Я считаю, что это безопасно, поскольку это стандарт. Любой серьезный двигатель. Это и то, на чем основан мой проект Jscex. Он работает для всех браузеров (даже для старых IE6) и Node.js. Я делаю такие вещи в течение года.:)
Можно ли полагаться на Function.prototype.toString
, чтобы вернуть строку, которая будет анализироваться как действительная функция javascript (для пользовательских функций)?
Есть ли обычно используемые javascript-движки, которые отклоняются от нормы, насколько они представляют объекты функций в строковой форме?
Я видел этот вопрос, но я не уверен, что он спрашивает одно и то же. Меня не волнует, что форматирование точно такое же во всех реализациях или что-то еще, меня больше беспокоит какой-то миниатюрный js-движок, просто удаляющий весь объект функции...
Другой связанный вопрос, но недостаточно тесно связанный, чтобы иметь удовлетворительный ответ на этот вопрос.
Я считаю, что это безопасно, поскольку это стандарт. Любой серьезный двигатель. Это и то, на чем основан мой проект Jscex. Он работает для всех браузеров (даже для старых IE6) и Node.js. Я делаю такие вещи в течение года.:)
Следует отметить, что код eval'd будет принимать текущую область действия, а конструктор Function будет принимать только глобальную область.
function createClosure() {
var x = 20,
y = 10;
// Doesn't know what x & y are
var fn = new Function("return x + y");
// Evaluates normally
var result = eval("x + y");
}