La méthode handler.construct()
est une trappe pour l'opérateur new
.
Syntaxe
var p = new Proxy(cible, { construct: function(cible, listeArguments, newTarget) { } });
Paramètres
Les paramètres suivants sont passés à la méthode construct
. this
est ici lié au gestionnaire (handler).
cible
- L'objet cible.
listeArguments
- La liste des arguments passés au constructeur.
newTarget
- Le constructeur originellement appelé.
Valeur de retour
La méthode construct
doit renvoyer un objet.
Description
La méthode handler.construct()
est une trappe pour l'opérateur new
.
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 exception TypeError
:
- Le résultat doit être un
Object
.
Exemples
Dans l'exemple qui suit, on piège l'opérateur new
.
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" // 10
Dans 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ée
Spécifications
Spécification | Statut | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de '[[Construct]]' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de '[[Construct]]' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | ? | 18 (18) | ? | ? | ? |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | ? | ? | 18.0 (18) | ? | ? | ? |
Voir aussi
Proxy
handler
- L'opérateur
new
Reflect.construct()
Étiquettes et contributeurs liés au document
Étiquettes :
Contributeurs à cette page :
SphinxKnight
Dernière mise à jour par :
SphinxKnight,