2012-12-28 14 views
6

संभव डुप्लिकेट इस्तेमाल किया चर को खोजने के लिए कैसे:
Fetching all (javascript) global variables in a pageवैश्विक मेरी जावास्क्रिप्ट में

मेरा आवेदन जावास्क्रिप्ट में वैश्विक चर उपयोग कर रहा है। क्या यह पता लगाने का कोई तरीका है कि उनमें से कितने हैं?

धन्यवाद ओम

+5

सबसे आसान तरीका होगा 'विंडो' ऑब्जेक्ट का निरीक्षण करें। – Shmiddty

+0

जिज्ञासा से, आप वैश्विक चर सेट क्यों करना चाहते हैं? मैं ऐसे मामले के बारे में सोचने की कोशिश कर रहा हूं जहां यह आवश्यक होगा, लेकिन मैं एक के साथ नहीं आ सकता। – Thomas

+0

@ थॉमस: जब हमने शुरुआत में एप्लिकेशन को डिज़ाइन किया था तो हमने इसका इस्तेमाल किया था और अब मैं उन्हें हटाने और उन्हें स्थानीय बनाने की कोशिश कर रहा हूं .. – Ohm

उत्तर

0

एक लिंटर का उपयोग करना आपको चेतावनी देता है जब वैश्विक पेश किया जाता है। आप अपने कोड चलाने से पहले और उसके बाद window की वस्तुओं की तुलना भी कर सकते हैं।

1

इस तरह खिड़की तत्व के माध्यम से दोहराएं:

for(var globe in window){ 
console.log(globe); 
} 
9

मैं एक बना दिया।

var GlobalTester = (function(){ 
    var fields = {}; 
    var before = function(w){ 
     for(var field in w){ 
      fields[field] = true; 
     }; 
    }; 

    var after = function(w){ 
     for(var field in w){ 
      if(!fields[field]){ 
       console.log(field + " has been added"); 
      }    
     }; 

    }; 
    return {before: before, after:after}; 
}()); 

GlobalTester.before(window); 

// Run your code here   
window.blar = "sdfg";  

GlobalTester.after(window);   
​ 
​ 

कंसोल में हो जाएगा ताकि उत्पादन blar has been added

8

आपके ब्राउज़र डेवलपर विंडो में यह प्रयास करें (F12):

Object.keys(window).length 
+3

+1 (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys) –

+2

यह सभी गुणों की गणना करेगा यह खिड़की, न सिर्फ उन लोगों को जो ओपी में दिलचस्पी रखते हैं। –

+0

बंद है इसलिए मैं जवाब नहीं दे सकता; इसके अलावा ['Object.getOwnPropertyNames (विंडो)'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames) का उपयोग करके देखें, यदि आप जो भी ग्लोबल्स जोड़ रहे हैं शायद गणित नहीं हो सकता है। –

-2

विंडो ऑब्जेक्ट का निरीक्षण करें, लेकिन आप सभी जानते करने की आवश्यकता होगी वैश्विक चर नामों से पहले, यहां एक उदाहरण है:

var myGlobalVars = {"global1":0, "global2":0}; 

function countGlobals() { 
    var count = 0; 
    for (myGlobalVar in myGlobalVars) { 
     if (myGlobalVar in window) { 
      count++; 
     } 
    } 

    return count; 
} 

countGlobals(); 
+2

... एक मिनट लें और इस उत्तर के बारे में सोचें। फिर आगे बढ़ें और इसे हटा दें। – Shmiddty

+0

इसके बारे में सोचने के बाद, मैं आपकी चिंता को समझता हूं, क्योंकि आप ग्लोबलवर्स वैरिएबल में गुणों की संख्या को गिन सकते हैं। लेकिन जैसा कि मैंने इस सवाल का अर्थ दिया है, गुण हो सकते हैं या नहीं भी हो सकते हैं, इसलिए यह उत्तर उचित है। –

+2

यदि ओपी अपने सभी वैश्विक चर के नामों को जानता है, तो वे सवाल क्यों पूछेंगे? – Shmiddty

संबंधित मुद्दे