2010-11-09 19 views
6

estoy usando 0.3.1-pre Node.jsobjeto 'global' en Node.js

Hacer esto:

typeof global.parseInt 

resultados en

'undefined' 

Sin embargo, cuando presionando [Tab ] en la consola después de escribir 'global'. proporciona una lista de funciones, incluido parseInt.

¿Qué es parseInt miembro del espacio de nombres global o no?

+0

¿Por qué simplemente no haces 'typeof parseInt'? Esto funciona para mí – jwueller

+0

Sí lo hace. Solo quiero saber cuál es el motivo de esta idiosincrasia. – Art

Respuesta

9

Aparentemente, el objeto global no es el objeto global, ya que window está en el navegador. Es (de acuerdo con micheil en #nodejs @ freenode) realmente solo se usa internamente. Algo sobre cierres globales y otras cosas.

parseInt y setTimeout y todos esos amigos son globales por sí solos. No es parte de ningún objeto global visible.

+0

¿Significa que decorar el objeto global realmente no lo hace accesible desde el módulo, o que sería accesible, sino solo como una propiedad del objeto global en otros módulos? –

+2

Lo que sea que hagas con el objeto global se anula en cualquier momento. Cada vez que el proceso del nodo interno hace algo que requiere su uso, se restablece. Por lo tanto, no es confiable (en absoluto) para cualquier globo terráqueo persistente. De hecho, el único lugar donde lo he visto funcionar durante más de medio segundo está en el nodo-repl (línea de comando). –

+0

gracias por el comentario. eso es muy triste :(, especialmente cuando muchas personas en muchos lugares lo dirigen al objeto global –

9

Definir variable en app.js sin var, al igual que lo hace visible myvar='someval' dentro de cada .js en su proyecto

+0

¿Es esa una respuesta directa a la pregunta? No lo creo. – itsbruce

+0

Es una respuesta a las posibles intenciones detrás de la pregunta o las intenciones de los demás al aterrizar aquí. Como cualquier respuesta debería ser. Gracias bFunc. – zupa

+0

esto me ha ayudado mucho. ¡Thx! –

12

A partir de NodeJS v0.8.14 global parece trabajar a través de módulos como el objeto de la ventana hace en el navegador.

de prueba:

a.js:

a1 = console.log; // Will be accessed from b.js 
global.a2 = console.log; // Will be accessed from b.js 

require('./b.js'); 

b1('a: b1'); 
b2('a: b2'); 
global.b1('a: global.b1'); 
global.b2('a: global.b2'); 

b.js:

a1('b: a1'); 
a2('b: a2'); 
global.a1('b: global.a1'); 
global.a2('b: global.a2'); 

b1 = console.log; // Will be accessed from a.js 
global.b2 = console.log; // Will be accessed from a.js 

Operando a.js salidas:

b: a1 
b: a2 
b: global.a1 
b: global.a2 
a: b1 
a: b2 
a: global.b1 
a: global.b2 
+0

Más respuestas upated. – Tushar

Cuestiones relacionadas