2010-05-04 17 views
14

C'è un modo per javascript per rilevare tutte le variabili assegnate? Ad esempio, se un file js crea un gruppo di vars (a livello globale), un file successivo può ottenere tutti i vars senza sapere come vengono denominati e quali potrebbero esistere?Ottieni tutte le variabili Javascript?

Grazie in anticipo :)

EDIT, Domanda Parte 2:

Come faccio a ottenere i valori di queste variabili? Ecco quello che ho tentato:

Questo è quello che ho finito con, come da commento suggerimenti:

for (var name in this) { 
    variables[name] = name; 
    variables[name]=this[name] 
} 
+0

Penso che tu abbia bisogno di 'variables [nome] = questo [nome]'. –

+0

Grazie, sono in grado di avvisare usando la variabile c usando: alert (variables.c); – Matrym

risposta

22

di Flanagan "JavaScript - The Definitive Guide" ha pronunciato la seguente a pagina 653:

var variables = "" 
for (var name in this) 
    variables += name + "\n"; 
+0

Fornisce qualcosa in più, presumibilmente dal browser, ma funziona! Grazie :) – Matrym

+0

Uh. Mi dispiace, ma potresti aiutarmi a capire come ottenere i valori di ciascuna di queste variabili ora? Ho aggiunto il codice a quello che ho tentato .. – Matrym

+0

Il "nome" è come una chiave in un "questo" hash. Ottieni il valore con questo [nome]. – wombleton

2

Per Firefox, è possibile visualizzare la scheda DOM - facile, anche se non è una risposta alla tua domanda.

Il ciclo for in fornito nella risposta di Kinopiko funzionerà, ma non in IE. Altro è spiegato nell'articolo collegato sotto.

Per IE, utilizzare RuntimeObject.

if(this.RuntimeObject){ 
    void function() { 
     var ro = RuntimeObject(), 
      results = [], 
      prop; 
     for(prop in ro) { 
      results.push(prop); 
     } 
     alert("leaked:\n" + results.join("\n")); 
    }(); 
} 

Consulta anche:

+0

Ciao Garrett. Ho modificato la tua risposta per aggiungere la formattazione del codice all'esempio 'RuntimeObject'. –

+0

Thx Tim, molto utile! – Cody

1

C'è la variabile this. Si tratta di un oggetto o un array, e si può semplicemente mettere:

for(i in this) { //do something } 

Purtroppo, tornerà tutto sotto l'oggetto this.

Problemi correlati