2010-05-04 31 views
14

Javascript'in tüm atanan değişkenleri tespit etmesinin bir yolu var mı? Örneğin, bir js dosyası bir grup varsayı (küresel kapsamda) oluşturuyorsa, sonraki bir dosya, adlarını bilmeden ve var olabileceklerini bilmeden tüm varlıkları alabilir mi? peşin :)Tüm Javascript Değişkenlerini al?

EDIT

sayesinde Soru Bölüm 2:

nasıl bu değişkenlerin değerlerini alabilirim? İşte çalıştılar budur:

Bu benim açıklama önerileri uyarınca, ile sona erdi budur:

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

Sanırım değişkenlere [name] = bu [name] 'ihtiyacın var. –

+0

Teşekkürler, ben kullanarak c değişkenini kullanarak uyarı mümkün: alert (variables.c); – Matrym

cevap

22
Flanagan "JavaScript - Kesin Kılavuzu"

sayfa 653 aşağıdaki verir:

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

Muhtemelen tarayıcıdan bazı ekstra şeyler verir, ancak çalışır! Teşekkürler :) – Matrym

+0

Uh. Maalesef, şu anda bu değişkenlerin her birinin değerlerini nasıl alacağımı anlamama yardımcı olabilir misiniz? Ne denediğimi kod ekledim .. – Matrym

+0

"isim", "bu" karma bir anahtar gibidir. Bu değeri [isim] ile alın. – wombleton

2

Firefox için, DOM sekmesini görebilirsiniz - sorunun cevabı olmasa da, kolay.

Kinopiko'nun yanıtında sağlanan for in döngüsü, IE'de değil, çalışır. Aşağıda bağlantılı makalede daha fazlası açıklanmaktadır.

IE için RuntimeObject'u kullanın.

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

Ayrıca bakınız:

+0

Hi Garrett'e yardım eder. Cevabınızı 'RuntimeObject' örneğine kod formatı eklemek için düzenledim. –

+0

Thx Tim, çok kullanışlı! – Cody

1

this değişken vardır. Bu, bir nesne veya bir dizidir ve sadece koyabilirsiniz:

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

Ne yazık ki, this nesnenin altında herşeyi dönecektir.

İlgili konular