Безопасно ли полагаться на Function.prototype.toString? - PullRequest
12 голосов
/ 10 декабря 2011

Безопасно ли полагаться на Function.prototype.toString, чтобы возвращать строку, которая будет анализироваться как допустимая функция javascript (для пользовательских функций)?

Существуют ли какие-либо обычно используемые механизмы javascript, которые отличаются отнорма, насколько они представляют функциональные объекты в виде строки?

Я видел этот вопрос , но я не уверен, что он задает то же самое.Меня не волнует, одинаково ли форматирование во всех реализациях или что-то в этом роде, меня больше беспокоит то, что какой-то минимизированный движок js просто удаляет все тело функции ...

Еще один связанный вопрос, но недостаточно тесно связаны, чтобы иметь удовлетворительный ответ на этот вопрос.

Ответы [ 2 ]

3 голосов
/ 10 декабря 2011

Я думаю, что это безопасно, так как это стандарт. Подойдет любой серьезный двигатель. На этом и основан мой проект Jscex . Он работает для всех браузеров (даже устаревших IE6) и Node.js. Я делаю такие вещи в течение года. :)

1 голос
/ 01 июня 2014

Следует отметить, что 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");
}
...