Hi,
Nun möchte ich alle Function-Objekte, die das Dokument kennt, durchlaufen
for( var name in window ) {
var f = window[name];
if( typeof f != 'function' ) continue;
//... do something
}
>
> jedoch sind diese im window-Objekt nicht vorhanden, zumindest dann nicht, wenn man mit dieser for-each-Schleife drübergeht.
Das ist bei Funktionen, die nicht erst nachgeladen werden, sondern schon "sofort" in einem Script-Bereich im Dokument vorhanden sind, nach meinem Test genauso.
~~~javascript
function Test1() {
alert("Test1");
}
var Test2 = function() {
alert("Test2");
}
Test3 = function() {
alert("Test3");
}
window.Test4 = function() {
alert("Test4");
}
Die einzige dieser Funktionen, die mir über eine for-in-Schleife analog deiner aufgelistet wird, ist - Test4.
Kennt man den Namen des Function-Objektes und referenziert dieses direkt (window["MeineKlasse"]), kennt sich IE plötzlich aus. Warum?!
Keine Ahnung. Ich kann nur vermuten, dass der IE an dieser Stelle ähnlich "speziell" ist, wie auch beim dynamischen erzeugen von Formularelementen - siehe auch </archiv/2009/7/t188948/#m1258678>
Selbst mit Variablen verhält er sich nicht anders, wenn ich analog zu obigem Beispiel
TVar1 = "TVar1";
var TVar2 = "TVar2";
window.TVar3 = "TVar3";
habe, und mit for-in über die Eigenschaften von window iteriere, dann bekomme ich lediglich TVar3 angezeigt, die ersten beiden jedoch nicht.
MfG ChrisB
Light travels faster than sound - that's why most people appear bright until you hear them speak.