Можно ли полагаться на функцию .prototype.toString?

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

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

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

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

Ответы

Ответ 1

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

Ответ 2

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