我想这样做是因为我的项目通常使用如下快捷变量:
(function() {
var world = new World(),
Event = world.Event,
Guide = world.Guide;
Event.add('updateUI', function() {
// 1st: Correct, the value of 'this' refers to a world
this.Guide.show('UI updated');
// 2nd: Ok because 'world' was defined in outer scope
world.Guide.show('UI updated');
// 3rd: Ok because 'Guide' was defined in outer scope
Guide.show('UI updated');
});
})();
如果我移动Event.add('updateUI', function() { ... });
到其他文件,只有第一个语句 ( this.Guide.show
) 有效。如何防止此函数使用外部作用域的world
orGuide
变量,以便第二条和第三条语句从一开始就抛出错误。
use strict
非常接近这一点,但它只会阻止您访问全局对象。
更新以使这个问题更清楚:主要问题是:是否有任何方法可以防止函数在外部范围内查找变量?如果没有办法,请解释原因,因为我认为这样做是合理的。