说我有以下功能
function foo(){
console.log(test);
console.log(window);
}
有没有办法阻止 foo 访问窗口对象?我尝试了以下
foo.apply({});
但它只会更改此,并且可以访问窗口
答案 0 :(得分:1)
您可以使用var window = {};
覆盖对全局对象的引用。您还可以使用.apply({})
方法阻止通过this
进行访问。
但是,您无法做任何事情将阻止未声明的变量在全局对象上获取/设置,而不是手动定义每个可能的变量名称......
正如Bergi指出的那样,window = (function() {return this;}());
将恢复对window
对象的引用。这也是可能无法阻止的事情。