Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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");
}