2010-11-15 3 views
2

Existe-t-il une méthode dans laquelle je peux parcourir tous les objets qui existent dans une instance de JavaScript, quel que soit le moteur JavaScript utilisé? Je ne suis pas intéressé par itération à travers le DOM d'une page Web. Ce que je veux savoir, c'est s'il y a moyen de parcourir tous les objets de la bibliothèque standard (Array, Math, Date, etc.) ainsi que toutes les bibliothèques supplémentaires qui peuvent être spécifiques aux différents navigateurs.Existe-t-il un moyen d'obtenir tous les objets de bibliothèque dans une instance de JS?

Répondre

2

Non ... et oui. L'objet window est l'objet global dans un navigateur. Il contient tous les membres natifs de la portée globale, ainsi que toutes les fonctions et propriétés fournies pour le DOM.

Les objets natifs tels que Math, Array et Date sont des membres non énumérables de l'objet global, ce qui signifie que vous ne pouvez pas itérer sur eux à l'aide d'une boucle for...in. Cela couvre la partie "non" — il n'y a aucun moyen d'obtenir ces objets par itération dans de nombreux navigateurs. Toutefois, avec les implémentations ECMAScript 5th Edition (IE 9, Chrome 7, Firefox 4), vous pouvez utiliser Object.getOwnPropertyNames() pour obtenir un tableau de noms de propriétés pour un objet spécifique. Par exemple,

console.log(Object.getOwnPropertNames(window)); 

vous donnera une liste de tous les membres de l'objet window global, y compris les mathématiques, Array, date, etc.

+1

Soulignant l'évidence ici, mais de se référer à l'utilisation globale de l'objet 'this' dans la portée globale (puisque en dehors du contexte d'un navigateur il n'y a pas de' fenêtre') – Zecc

Questions connexes