Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
handler.construct()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
La méthodehandler.construct() est une trappe pour l'opérateurnew. Afin que l'opérationnew puisse être valide sur le proxy correspondant, la cible utilisée doit avoir une méthode interne[[Construct]] (autrement dit, l'instructionnew cible doit être valide).
Dans cet article
Exemple interactif
function monster1(disposition) { this.disposition = disposition;}const handler1 = { construct(target, args) { console.log(`Creating a ${target.name}`); // Expected output: "Creating a monster1" return new target(...args); },};const proxy1 = new Proxy(monster1, handler1);console.log(new proxy1("fierce").disposition);// Expected output: "fierce"Syntaxe
var p = new Proxy(cible, { construct: function (cible, listeArguments, newTarget) {},});Paramètres
Les paramètres suivants sont passés à la méthodeconstruct.this est ici lié au gestionnaire (handler).
cibleL'objet cible.
listeArgumentsLa liste des arguments passés au constructeur.
newTargetLe constructeur originellement appelé.
Valeur de retour
La méthodeconstruct doit renvoyer un objet.
Description
La méthodehandler.construct() est une trappe pour l'opérateurnew.
Interceptions
Ce trappe intercepte les opérations suivantes :
new proxy(...args)Reflect.construct()
Invariants
Si les invariants suivants ne sont pas respectés, le proxy renverra une exceptionTypeError :
- Le résultat doit être un
Object.
Exemples
Dans l'exemple qui suit, on piège l'opérateurnew.
var p = new Proxy(function () {}, { construct: function (target, argumentsList) { console.log("called: " + argumentsList.join(", ")); return { value: argumentsList[0] * 10 }; },});console.log(new p(1).value); // "appel sur : 1"// 10Dans cette version, on ne respecte pas la contrainte d'invariance :
var p = new Proxy(function () {}, { construct: function (target, argumentsList) { return 1; },});new p(); // Une exception TypeError est levéeDans le code qui suit, le proxy n'est pas correctement initialisé. La cible du proxy doit être un constructeur valide qui puisse être utilisé avecnew.
var p = new Proxy( {}, { construct: function (target, argumentsList, newTarget) { return {}; }, },);new p(); // TypeError: p is not a constructorSpécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget> |
Compatibilité des navigateurs
Voir aussi
Proxyhandler- L'opérateur
new Reflect.construct()