Object.prototype.isPrototypeOf()

La méthode isPrototypeOf() permet de tester si un objet fait partie de la chaîne de prototypes d'un autre objet.

Note : isPrototypeOf() est différent de l'opérateur instanceof. Dans l'expression « object instanceof AFunction », on compare la chaîne de prototypes d'object avec AFunction.prototype et non avec AFunction.

Syntaxe

prototypeObj.isPrototypeOf(obj)

Paramètres

obj
L'objet pour lequel parcourir la chaîne de prototypes.

Valeur de retour

Un booléen indiquant si l'objet appelant possède l'objet indiqué dans sa chaîne de prototypes.

Exceptions

TypeError
Une exception TypeError est levée lorsque prototypeObj vaut undefined ou null.

Description

Dans cet exemple, on montre que Bidule.prototype, Truc.prototype, Toto.prototype et Object.prototype font bien partie de la chaîne de prototype pour l'objet bidule :

function Toto() {}
function Truc() {}
function Bidule() {}

Truc.prototype = Object.create(Toto.prototype);
Bidule.prototype = Object.create(Truc.prototype);

var bidule = new Bidule();

console.log(Bidule.prototype.isPrototypeOf(bidule)); // true
console.log(Truc.prototype.isPrototypeOf(bidule));   // true
console.log(Toto.prototype.isPrototypeOf(bidule));   // true
console.log(Object.prototype.isPrototypeOf(bidule)); // true

La méthode isPrototypeOf() et l'opérateur instanceOf s'avèrent particulièrement utiles lorsqu'on souhaite manipuler spécifiquement des objets qui descendent d'une chaîne de prototypes donnée. On peut les utiliser pour s'assurer que les objets auront certaines méthodes ou propriétés.

Par exemple, on peut vérifier que bidule descend bien de Toto.prototype avant de le manipuler :

if (Toto.prototype.isPrototypeOf(bidule)) {
  // effectuer quelque chose de sûr
}

Spécifications

Spécification État Commentaires
ECMAScript 3rd Edition (ECMA-262) Standard Définition initiale.
ECMAScript 5.1 (ECMA-262)
La définition de 'Object.prototype.hasOwnProperty' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Object.prototype.hasOwnProperty' dans cette spécification.
Standard  
ECMAScript Latest Draft (ECMA-262)
La définition de 'Object.prototype.hasOwnProperty' dans cette spécification.
Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Edge Internet Explorer Opera Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) Edge IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, darul75, teoli, Jeremie, fscholz, BenoitL
 Dernière mise à jour par : SphinxKnight,