2013-01-22 5 views
7

Po uruchomieniu przeglądarki wszystkie elementy dołączone do obiektu "okna" automatycznie staną się obiektami globalnymi. Jak mogę utworzyć obiekt podobny do tego w Nodejs?Jak naśladować obiekt "okno" w Nodejs?

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

Odpowiedz

5

można dołączyć globalny rzeczy do process zamiast window

+0

Chodzi mi o to, że chcę stworzyć specjalny obiekt podobny do "okna". Dołączenie do niego "foo" sprawi, że "foo" stanie się globalne. –

5

Można użyć predefiniowany obiekt global do tego celu. Jeśli zdefiniujesz foo jako właściwość obiektu global, będzie on dostępny we wszystkich modułach używanych po tym.

Na przykład w 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'); 

I foo.js:

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

upewnij się, że nie należy używać słowa kluczowego var jako przedmiot global jest Już zdefiniowane.

Aby uzyskać dokumentację, należy zapoznać się z http://nodejs.org/api/globals.html#globals_global.

+0

Ale uważaj, w przeciwieństwie do javascript przeglądarki, globalne obiekty nie są prawdziwie globalne w znaczeniu tego słowa. Są nadal lokalne dla modułu, czyli pliku javascript. Innymi słowy, cokolwiek dołączone do globalnego obiektu pliku nie będzie dostępne w innym pliku, będziesz musiał dołączyć go do specjalnego obiektu 'module.exports'. Aby uzyskać więcej informacji, sprawdź, jak działają nodejs. –

+0

Dzięki za odpowiedź i powiadomienie. Przyszedłem do tego prostego rozwiązania: var mySpecialObject = global. W przeglądarce (w zasięgu globalnym): mySpecialObject = this. –

1

Możesz użyć obiektu GLOBAL.

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

var car = 'volks'; 
console.log(GLOBAL.car); // prints undefined 
0

Doszedłem do tego prostego rozwiązania:

var mySpecialObject = global; 

w normalnych przeglądarki:

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

Jeśli było porównać z konsoli Web do węzła uruchomiony terminal (zarówno Javascript):

window < ->global (Uwaga: GLOBAL i y przestarzałe)

w konsoli internetowej: window.wgSiteName (losowo pokazać funkcjonalność)

w węzeł (terminal): global.url

document < ->process (Uwaga: Proces program uruchomiony teraz)

w konsoli internetowej: document.title

w węźle (terminal): process.title