2012-12-28 13 views
6

Powiel możliwe:
Fetching all (javascript) global variables in a pageJak znaleźć zmienne globalne używane w moim javascript

Moja aplikacja jest przy użyciu zmiennych globalnych w JavaScript. Czy istnieje sposób, aby dowiedzieć się, ile ich jest?

Dzięki Om

+5

Najprostszym sposobem byłoby sprawdź obiekt 'window'. – Shmiddty

+0

Z ciekawości, dlaczego chcesz ustawić zmienne globalne? Próbuję wymyślić przypadek, w którym byłoby to konieczne, ale nie mogę wymyślić takiego. – Thomas

+0

@Thomas: Kiedy zaprojektowaliśmy aplikację początkowo, użyliśmy jej i teraz próbuję usunąć i uczynić je lokalnymi .. – Ohm

Odpowiedz

0

Korzystanie z puchu by cię ostrzec, gdy wprowadzane są globalne. Możesz także porównać elementy window przed i po uruchomieniu kodu.

1

iterację elementu okiennej tak:

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

zrobiłem jeden.

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);   
​ 
​ 

Wyjście wola blar has been added w konsoli

8

Spróbuj tego w oknie programistów przeglądarki (F12):

Object.keys(window).length 
+3

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

+2

Spowoduje to zwrócenie liczby wszystkich właściwości to okno, nie tylko te, które interesuje się PO. –

+0

Zamknięte, więc nie mogę odpowiedzieć; Zobacz także użycie ['Object.getOwnPropertyNames (window)'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames) jeśli którykolwiek z globaliów, które dodajesz może nie być przeliczalne. –

-2

Sprawdzić obiekt okna, ale trzeba znać wszystkie nazwy zmiennych globalnych zanim to zrobisz, oto przykład:

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

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

    return count; 
} 

countGlobals(); 
+2

... Poświęć chwilę i pomyśl o tej odpowiedzi. Następnie idź dalej i usuń go. – Shmiddty

+0

Po przemyśleniu tego, rozumiem twoje obawy, ponieważ możesz po prostu policzyć liczbę właściwości w zmiennej globalVars. Ale kiedy zinterpretowałem to pytanie, właściwości mogą, ale nie muszą, więc odpowiedź jest uzasadniona. –

+2

Jeśli OP zna nazwy wszystkich zmiennych globalnych, dlaczego zadałby to pytanie? – Shmiddty