Я могу отключить строгий режим ecmascript для конкретной функции? | VPROS.ru

Я могу отключить строгий режим ecmascript для конкретной функции?

Я не нашел ничего насчет моего вопроса здесь на МДК или в спецификации ecmascript не. Наверное, кто-то знает более ‘ломаные’ способ решить эту.

Я звоню "use strict" на каждый файл JavaScript в моем окружении. Все Мои файлы запустить такой

(function(win, doc, undef) {     "use strict";      // code & functions }(window, window.document)); 

Теперь у меня есть пользовательская функция, которая обрабатывает ошибки. Что функции использует .caller собственность для обеспечения связи трассировки стека. Выглядит так:

var chain = (function() {     var _parent = _error,         _ret = '';      while( _parent.caller ) {         _ret += ' -> ' + _parent.caller.name;         _parent = _parent.caller;     }      return _ret; }()); 

Но, конечно, в строгом режиме .caller не-удаляемый реквизит, который бросает при извлечении. Так у меня вопрос, кто-нибудь в курсе как отключить строгого более “функциональный характер” ?

"use strict"; наследуется все функции после того как она называлась. Теперь у нас есть возможность просто использовать строгий режим в специфических функциях, достаточно просто позвонить "use strict"; в верхней части те, но есть ли способ, чтобы добиться обратного ?

One Reply to “Я могу отключить строгий режим ecmascript для конкретной функции?”

  1. http://javascriptweblog.wordpress.com/2011/05/03/javascript-strict-mode/)

    (…) Строгий режим не используется в нестрогом функции, которые вызываются внутри корпуса строгая функция (либо потому, что они были переданы в качестве аргументов вызова или через call или apply).

    Так что если вы настройка методов ошибка в другом файле, без строгого режима, а затем передать их в качестве параметра, как это:

    var test = function(fn) {   'use strict';   fn(); }  var deleteNonConfigurable = function () {   var obj = {};   Object.defineProperty(obj, "name", {     configurable: false   });   delete obj.name; //will throw TypeError in Strict Mode }  test(deleteNonConfigurable); //no error (Strict Mode not enforced) 

    …он должен работать.

Comments are closed.