La méthode isPrototypeOf() permet de tester si un objet existe dans 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(objet)

Paramètres

objet
L'objet dont la chaîne de prototypes sera parcourue.

Valeur retournée

Un Boolean indiquant si l'objet appelant se trouve dans sa chaîne de prototypes de l'objet indiqué.

Erreurs déclenchées

TypeError
Une exception TypeError est déclenchée si prototypeObj est undefined ou null.

Description

La méthode isPrototypeOf () vous permet de vérifier si un objet existe ou non dans la chaîne de prototypes d'un autre objet.

Exemples

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

function Machin() {}
function Truc() {}
function Bidule() {}

Truc.prototype = Object.create(Machin.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(Machin.prototype.isPrototypeOf(bidule)); // true
console.log(Object.prototype.isPrototypeOf(bidule)); // true

La méthode isPrototypeOf(), avec l'opérateur instanceof en particulier, s'avère particulièrement utile si vous avez du code qui ne peut fonctionner que lorsqu'il traite des objets descendant d'une chaîne de prototypes donnée, par ex., pour garantir que certaines méthodes ou propriétés seront présentes dans cet objet.

Par exemple, vérifier que bidule descend bien de Machin.prototype :

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

Spécifications

Spécification Statut Commentaire
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éChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple Oui Oui Oui Oui Oui Oui
FonctionnalitéAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Support simple Oui Oui Oui Oui Oui Oui Oui

Voir aussi

Étiquettes et contributeurs liés au document

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