2015-07-01 14 views
6

में सभी वैश्विक चर सूचीबद्ध करें मैं built-in objects पर प्रतिक्रिया देने वाले सभी वैश्विक चर सूचीबद्ध करने की कोशिश कर रहा हूं।Node.js

Chrome की कंसोल में मैं बस this टाइप करें और सभी चाबियाँ वापस प्राप्त कर सकते हैं, आदि String तरह बातें, Number,

हालांकि जब मैं Node.js में यह कर मैं बहुत कम मिलता है जिनमें शामिल हैं:

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

this.eval कहां से आ रहा है?

+1

कोशिश 'Object.keys (Object.getPrototypeOf (यह))' और 'Object.getOwnPropertyNames (यह)' (विरासत में मिला और गैर गणनीय संपत्तियों के लिए क्रमशः) – Bergi

+0

'Object.getOwnPropertyNames (यह)' चाल किया, धन्यवाद @Bergi! – liadmat

+1

एक फ़ाइल में, यह एक मॉड्यूल के रूप में लोड किया गया है, जहां 'यह' वैश्विक वस्तु नहीं है। – Bergi

उत्तर

5

में निर्मित के गुणों वैश्विक वस्तु गैर-गणना योग्य है, इसलिए Object.keys उन्हें वापस नहीं करता है। आप इसके बजाय Object.getOwnPropertyNames का उपयोग कर सकते हैं।

3

निम्नलिखित globals() समारोह आप वैश्विक नामस्थान वस्तु मिल जाएगा:

function globals() { return this; } 

इसके साथ आप नाम स्थान किसी भी समय वैश्विक की सभी चर सूचीबद्ध कर सकते हैं आप चाहते हैं:

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

और सख्त मोड में? ;-) – RobG