【发布时间】:2014-01-27 17:50:18
【问题描述】:
我试图在 JavaScript 中一个空的隔离执行上下文中执行一段代码。在下面的示例中,我正在尝试隔离 isolated 执行范围。我想要做的是在没有全局变量的上下文中执行一个函数。
(function() {
'use strict';
var scope = Object.create(null);
var isolated = function() {
'use strict';
console.log(document); // Trying to get undefined
// but traces `document`.
};
isolated.call(scope);
})();
我认为使全局变量无效很简单,但是太多了!
var isolated = function(window, document, location /* etc */) {
// ...
};
isolated.call(scope, undefined, undefined, undefined /* etc */);
有没有更好的方法来做到这一点?
【问题讨论】:
-
我在 EcmaScript 6 中找到了一种方法来调整
with(context) { ... },这样我们分配的任何新变量都会进入上下文对象,而不是全局/窗口对象。更多信息在这里:stackoverflow.com/a/62350258/218294
标签: javascript scope