La méthode handler.getPrototypeOf()
représente une trappe pour la méthode interne [[GetPrototypeOf]]
.
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 à envoyer une pull request !
Syntaxe
var p = new Proxy(obj, {
getPrototypeOf(cible) {
...
}
});
Paramètres
Le paramètre suivant est passé à la méthode getPrototypeOf
. this
est lié au gestionnaire.
cible
- L'objet cible.
Valeur de retour
La méthode getPrototypeOf
doit renvoyer un objet ou null
.
Description
Interceptions
Cette trappe permet d'intercepter les opérations suivantes :
Invariants
Si les invariants suivant ne sont pas respectés, le proxy renverra une exception TypeError
:
getPrototypeOf
doit renvoyer un objet ounull
.- Si la
cible
n'est pas extensible,Object.getPrototypeOf(proxy)
doit renvoyer la même valeur queObject.getPrototypeOf(cible)
.
Exemples
Utilisation simple
var obj = {};
var proto = {};
var gestionnaire = {
getPrototypeOf(cible) {
console.log(cible === obj); // true
console.log(this === gestionnaire); // true
return proto;
}
};
var p = new Proxy(obj, gestionnaire);
console.log(Object.getPrototypeOf(p) === proto); // true
Cinq façons de déclencher la trappe getPrototypeOf
var obj = {};
var p = new Proxy(obj, {
getPrototypeOf(cible) {
return Array.prototype;
}
});
console.log(
Object.getPrototypeOf(p) === Array.prototype, // true
Reflect.getPrototypeOf(p) === Array.prototype, // true
p.__proto__ === Array.prototype, // true
Array.prototype.isPrototypeOf(p), // true
p instanceof Array // true
);
Deux types d'exceptions
var obj = {};
var p = new Proxy(obj, {
getPrototypeOf(cible) {
return "toto";
}
});
Object.getPrototypeOf(p); // TypeError : "toto" n'est pas un objet ou null
var obj = Object.preventExtensions({});
var p = new Proxy(obj, {
getPrototypeOf(cible) {
return {};
}
});
Object.getPrototypeOf(p); // TypeError : on attend la même valeur pour le prototype
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de '[[GetPrototypeOf]]' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript (ECMA-262) La définition de '[[GetPrototypeOf]]' dans cette spécification. |
Standard évolutif |
Compatibilité des navigateurs
BCD tables only load in the browser
Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une pull request sur https://github.com/mdn/browser-compat-data.