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.