我在 MDC 或 ECMAscript 规范上找不到任何关于我的问题的信息。可能有人知道一个更“hacky”的方法来解决这个问题。
我正在调用"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";
的顶部调用来在特定函数中使用严格模式,但是有没有办法实现相反的效果?