La méthode isPrototypeOf()
permet de tester si un objet existe dans la chaîne de prototypes d'un autre objet.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et envoyez-nous une pull request.
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 de retour
Un Boolean
indiquant si l'objet appelant se trouve dans sa chaîne de prototypes de l'objet indiqué.
Erreurs déclenchées
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 (ECMA-262) La définition de 'Object.prototype.hasOwnProperty' dans cette spécification. |
Standard évolutif |
Compatibilité des navigateurs
BCD tables only load in the browser