2015-07-01 13 views
6

Próbuję wyświetlić wszystkie zmienne globalne, w tym te odnoszące się do built-in objects.Lista wszystkich zmiennych globalnych w pliku Node.js

W konsoli Chrome mogę po prostu wpisać this i odzyskać wszystkie klucze, w tym takie rzeczy jak String, Number itp

Jednak kiedy mogę to zrobić w node.js dostaję dużo mniej:

> Object.keys(this) 
[ 'global', 
    'process', 
    'GLOBAL', 
    'root', 
    'Buffer', 
    'setTimeout', 
    'setInterval', 
    'clearTimeout', 
    'clearInterval', 
    'setImmediate', 
    'clearImmediate', 
    'console', 
    'module', 
    'require', 
    '_' ] 
> this.eval 
[Function: eval] 

Skąd pochodzi this.eval?

+1

Spróbuj 'Object.keys (Object.getPrototypeOf (this))' i 'Object.getOwnPropertyNames (this)' (dziedzicznych i non-przeliczalnych właściwości odpowiednio) – Bergi

+0

'Object.getOwnPropertyNames (this)' wystarczyły, dzięki @Bergi! – liadmat

+1

W pliku jest ładowany jako moduł, gdzie 'this' nie jest obiektem globalnym. – Bergi

Odpowiedz

3

Poniższy globals() funkcja będzie Ci globalny obiekt namespace:

function globals() { return this; } 

Dzięki niemu można listę wszystkich zmiennych globalnych namespace kiedy tylko chcesz:

function varsList() { 
    return Object.getOwnPropertyNames(globals()); 
} 
+1

I w trybie ścisłym? ;-) – RobG

Powiązane problemy