Comment examiner un objet en javascript:
On peut appeler cela de l'introspection, c'est à dire l'étude de soi … ou plus simplement de l'inspection.
1/ Quel est type parmi les 6 types possibles en javascript: typeof :
typeof "hello" ; //string typeof (new Date()) ; // objet typeof jenexistepas ; //undefined typeof 5.5 ; // number typeof (1===1) ; //boolean typeof alert ; // function
2/ Si c'est un objet quel est sa classe ? Instanceof
Exemple :
var maintenant = new Date() ; maintenant instance of Date ; // true maintenant instance of Object ; // true alert instance of Object ; // true alert instance of Function ; // true alert instance of function ; // Erreur …
Mais il n'existe pas la fonction getInstanceof …
3/ Utilisation de la syntaxe for var i in objet :
Parfois il est nécessaire de connaître et énumérer les éléments qui constitue un objet en javascript :
La syntaxe for(var element in objet ) permet d'explorer l'objet et d'en énumérer les propriétés:
var o = {"Hello" : "moi", "DitHello": function(){ alert("hello")} for(var i in o){ console.log(i, o[i]) } //hello moi //SayHello function () {alert("hello");}
Mais cette forme est insuffisante, on ne peut pas aller plus loin avec par exemple :
for(var i in String.prototype ){ console.log(i , String.prototype[i] ); }
Cela ne marche pas!
Il faut donc une méthode plus complète d'inspection …
4/ Méthodes getOwnPropertyNames, getPrototypeOf et hasOwnProperty
Ces trois méthodes permettent de mieux explorer l'objet: les deux premières sont des méthodes de la classe "Object" la dernière est applicable à tout élément:La methode Object.getOwnPropertyNames( deUnObjet ) permet d'énumérer complètement toutes les propriété d'un objet javascript.
Exemple: //exploration d'un tableau o: clear(); var o= [0,1,2]; var path= "this"; while (o) { Object.getOwnPropertyNames(o).forEach(function (key) { console.log(path+ "."+ key); }); path+= ".__proto__"; o= o.__proto__; }
Voir discussion sur le thème des propriétés d'un objet en javascript sur google groups.