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.
Description
La méthode isPrototypeOf()
permet de vérifier si un objet est présent au sein de la chaîne de prototypes d'un autre objet.
Par exemple, si on a la chaîne suivante :
function Fee() { // ... } function Fi() { // ... } Fi.prototype = new Fee(); function Fo() { // ... } Fo.prototype = new Fi(); function Fum() { // ... } Fum.prototype = new Fo();
Si, plus tard, on instancie Fum
et qu'on souhaite savoir si le prototype de Fi
existe dans la chaîne de prototypes de Fum
, on peut utiliser le code suivant :
var fum = new Fum(); // ... if (Fi.prototype.isPrototypeOf(fum)) { // faire quelque chose }
Cette méthode, ainsi que l'opérateur instanceof
, peut s'avérer utile lorsqu'on souhaite utiliser du code qui ne fonctionnerait qu'avec un objet qui descend d'une certaine chaîne de prototypes, ce qui permet de s'assurer qu'il possède les propriétés ou méthodes nécessaires.
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 2017 Draft (ECMA-262) La définition de 'Object.prototype.hasOwnProperty' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) |