グローバル オブジェクトの使用は推奨されておらず、AMD を使用する背後にある全体的な考え方は、グローバル オブジェクトの使用を避けることです。しかし、一部のレガシー コードでは、グローバル オブジェクトでいくつかのものを定義する必要があります。現在、コードは次のようになっています。
//example2.js
define(function(){
var globalObject = window;
globalObject.x = ...
globalObject.y = ...
});
それは機能しますが、グローバル オブジェクトをハード コーディングするのwindow
は見栄えがよくないので、それを削除できるかどうかを知りたいと思っています。を使用しない場合define()
、コードは次のようになります。
//example1.js
x = ...
y = ...
私は知っています、私はあなたがこのコードを嫌っていることを知っていますが、ポイントにしましょう: グローバル変数はdefine()
、requirejs の関数内で構造化された方法でどのようにアクセスできますか? 次のように渡される関数への最後の隠しパラメーターのようなものがあればいいのにと思いますdefine()
。
//example3.js
define(function(globalObject){
globalObject.x = ...
globalObject.y = ...
});
または、さらに単純です。this
変数は、その関数内のグローバル オブジェクトを指します。例えば:
//example4.js
define(function(){
this.x = ...
this.y = ...
});
注:この最後のものについてはわかりません。this
に渡される関数内の変数を調査するrequire()
と、それはwindow
私の質問への答えになる可能性があると言われていますが、渡された関数が実行されているコンテキストについて言及しているドキュメントを見つけることができませんでした。結局のところ、グローバル変数のコンテキストで実行されているのでしょうか?