我在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";
的顶部调用而在特定功能中使用严格模式,但是有没有办法实现相反的目的?