2010-05-20 8 views
1

Si je veux prendre toutes les fonctions et variables déclarées dans mon programme dans firefox, il me suffit d'itérer l'objet 'window'. Par exemple si j'ai var a = function() {}; je peux utiliser un(); ou window.a(); dans Firefox, mais pas dans IE. Je fonction itérer objet fenêtre et écrire tous les noms de fonctions déclarées dans le programme comme:[javascript] Où sont toutes les fonctions dans IE?

for (smthng in window) { 
    document.write(smthng); 
} 

travaux en FF, dans IE il y a des choses, mais rien que je déclare avant. Des idées?

Répondre

2

Il s'agit d'un bogue JScript bien connu.

Dans IE, les variables globales ne sont pas énumérables sauf si vous les définissez explicitement en tant que propriétés de l'objet window.

var a = function() {};  // It won't be enumerated in a `for...in` loop 
window.b = function() {}; // It will be enumerated in a `for...in` loop 

Les deux façons ci-dessus sont vraiment similaires, la seule différence est que a est déclarée avec la déclaration var, et ce en font non supprimables, tandis que b peut être « deleted ».

delete window.a; // false 
delete window.b; // true 
Questions connexes