我在MDC或ECMAscript规范中没有找到关于我的问题的任何信息。也许有人知道一种更“巧妙”的方法来解决这个问题。
我在我的环境中为每个JavaScript文件调用“use strict”
。所有我的文件都以此开始。
(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";
来仅在这些函数中使用严格模式,但是否有一种实现相反效果的方法呢?