もう一度編集Node モジュールでは、グローバル オブジェクトへの参照を取得できないと結論付けようとしています。本当に必要はありません。それがモジュールメカニズムの要点のようなものだと思います。必要なものをインポートし、選択したものをエクスポートします。
Node にグローバル オブジェクトがあるかどうかは、興味深い質問だと思います。Rhinoには間違いなくあることを私は知っています。Java コンテナから Rhino に供給されるコードの周りに暗黙的なラッパー関数はありません。Java ScriptEngine メカニズム (およびおそらく「裸の」Rhino の Mozilla API から) を介して、シンボルをグローバル コンテキストにプッシュし、グローバル オブジェクト プロパティとして JavaScript に表示できるようにする方法があります。
うわー、これは複雑になりました。Node.js の世界では物事が動き出しているようです。上に書いたことは Node 0.6.2 にも当てはまりましたが、0.9.0 プレ ビルドでは、「global」と呼ばれるオブジェクトが実際に存在し、多かれ少なかれブラウザーのグローバル オブジェクトのように動作します。
以下のものは、ブラウザとRhino、およびそのような他のコンテキストに適用されます
this
グローバルコンテキストで使用できます。名前が必要な場合は、名前を付けることができます。
var global = this;
var obj = "Hi!";
global.obj = "Bye"; // sets "obj"
(やや) 一般的なイディオムは、コードを関数でラップして、グローバル名前空間を保護することです。
(function( global ) {
// everything
})( this );
警告:私は Node の人ではないので、その文化には新しいイディオムがあるかもしれません。
編集— ノードが関数で評価するファイルから実際にコードをラップし、それがグローバルコンテキストから渡されないthis
場合、それを「見つける」方法はないと思います。「use strict」を使用する場合 (使用する必要があります)、それは問題ではありません。とにかく、グローバル コンテキストを実際に台無しにすることはできないからです。