2010-05-04 3 views
14

Gibt es eine Möglichkeit für JavaScript, alle zugewiesenen Variablen zu erkennen? Wenn zum Beispiel eine js-Datei eine Gruppe von vars (global) erstellt, kann eine nachfolgende Datei alle Variablen abrufen, ohne zu wissen, was sie heißen und welche möglicherweise existieren.Alle Javascript-Variablen erhalten?

Vielen Dank im Voraus :)

EDIT, Frage Teil 2:

Wie erhalte ich die Werte dieser Variablen? Hier ist, was ich versucht habe:

Dies ist, was ich mit endete, wie pro Kommentar Vorschläge:

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

Ich denke, Sie brauchen 'Variablen [Name] = diese [Name]' dort. –

+0

Danke, ich kann mit der Variable c alarmieren (alarm (variable.c); – Matrym

Antwort

22

Flanagans "JavaScript - The Definitive Guide" gibt die folgende auf Seite 653:

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

Gibt einige Extras, vermutlich aus dem Browser, aber es funktioniert! Danke :) – Matrym

+0

Uh. Entschuldigung, aber könntest du mir helfen zu verstehen, wie man die Werte jeder dieser Variablen jetzt bekommt? Ich fügte Code zu dem hinzu, was ich versuchte. – Matrym

+0

Der "Name" ist wie ein Schlüssel in einen "dieser" Hasch. Erhalte den Wert über diesen [Namen]. – wombleton

2

Für Firefox können Sie den DOM-Tab sehen - einfach, aber keine Antwort auf Ihre Frage.

Die for in Schleife in Kinopiko Antwort funktioniert, aber nicht in IE. Mehr wird in dem unten verlinkten Artikel erklärt.

Verwenden Sie für IE die RuntimeObject.

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

Siehe auch:

+0

Hallo Garrett. Ich habe Ihre Antwort bearbeitet, um dem 'RuntimeObject'-Beispiel eine Code-Formatierung hinzuzufügen. –

+0

Thx Tim, sehr nützlich! – Cody

1

Es ist die this Variable. Dies ist ein Objekt oder ein Array, und Sie können einfach gesagt:

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

Leider ist es alles unter dem this Objekt zurück.