私のプロジェクトは通常、次のようなショートカット変数を使用するため、これを行いたいです。
(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
) のみが機能します。2 番目と 3 番目のステートメントが最初からエラーをスローするように、この関数が外部スコープの変数world
または変数を使用しないようにするにはどうすればよいですか。Guide
use strict
これに非常に近いですが、グローバル オブジェクトにアクセスできなくなるだけです。
この質問をより明確にするために更新されました。主な質問は次のとおりです。関数が外部スコープで変数を検索しないようにする方法はありますか? 方法がない場合は、その理由を説明してください。これを行う必要性は合理的だと思います。