使用javascript限制对全局上下文的访问

时间:2014-05-11 17:42:49

标签: javascript

说我有以下功能

function foo(){
    console.log(test);
    console.log(window);
}

有没有办法阻止 foo 访问窗口对象?我尝试了以下

foo.apply({});

但它只会更改,并且可以访问窗口

1 个答案:

答案 0 :(得分:1)

您可以使用var window = {};覆盖对全局对象的引用。您还可以使用.apply({})方法阻止通过this进行访问。

但是,您无法做任何事情将阻止未声明的变量在全局对象上获取/设置,而不是手动定义每个可能的变量名称......

正如Bergi指出的那样,window = (function() {return this;}());将恢复对window对象的引用。这也是可能无法阻止的事情。