2013-01-22 22 views
7

ブラウザで実行している場合、「ウィンドウ」オブジェクトに添付されているものはすべて自動的にグローバルオブジェクトになります。 Nodejsに似たオブジェクトを作成するにはどうすればいいですか?Nodejsの "window"オブジェクトをエミュレートするには?

mySpecialObject.foo = 9; 
var f = function() { console.log(foo); }; 
f(); // This should print "9" to console 

答えて

5

あなたがprocess代わりのwindow

+0

「ウィンドウ」に似た特殊なオブジェクトを作成したいのです。それに "foo"を付けると、 "foo"がグローバルになります。 –

5

にグローバルなものを添付することができますあなたは、その目的のために事前に定義されたオブジェクトglobalを使用することができます。 globalオブジェクトのプロパティとしてfooを定義すると、その後使用されるすべてのモジュールで利用できるようになります。例えば

app.jsに:

var http = require('http'); 
var foo = require('./foo'); 

http.createServer(function (req, res) { 
    //Define the variable in global scope. 
    global.foobar = 9; 
    foo.bar();  
}).listen(1337, '127.0.0.1'); 

そしてfoo.jsは中:

exports.bar = function() { 
    console.log(foobar); 
} 

globalオブジェクトがあるとして、あなたがvarキーワードを使用していないことを確認してください既に定義されています。

ドキュメントについては、http://nodejs.org/api/globals.html#globals_globalをご覧ください。

+0

しかし、ブラウザのjavascriptとは異なり、グローバルオブジェクトは言葉の意味で真にグローバルではありません。それらはモジュールのローカルなので、javascriptファイルです。つまり、ファイルのグローバルオブジェクトにアタッチされたものは、別のファイルでは使用できないため、特別な 'module.exports'オブジェクトにアタッチする必要があります。 nodejsがどのように動作する必要があるかの詳細については、 –

+0

答えと通知をありがとう。私はこの単純なソリューションに来ました:var mySpecialObject = global。ブラウザ(グローバルスコープ):mySpecialObject = this。 –

1

GLOBALオブジェクトを使用できます。通常のブラウザで

var mySpecialObject = global; 

fruit = 'banana'; 
console.log(GLOBAL.fruit); // prints 'banana' 

var car = 'volks'; 
console.log(GLOBAL.car); // prints undefined 
0
私はこの単純な解決策に来ている

あなたはターミナルで実行中のノードにWebコンソールを比較した場合

var mySpecialObject = this; // Run this at global scope 
0

(両方のJavascript ):

window < - >global(注:GLOBAL i sがWebコンソールに)

を非推奨:ノード(ターミナル)でwindow.wgSiteName(ランダム機能を表示するために)

global.url

document < - >process(注:今すぐ実行中のプログラムのプロセスを)

Webコンソールの

document.title

ノード(端末):process.title

関連する問題