La méthode statique Reflect
.construct()
agit comme l'opérateur new
sous la forme d'une fonction. Elle est équivalente à new cible(...args)
.
Syntaxe
Reflect.construct(cible, listeArguments[, newCible])
Paramètres
cible
- La fonction cible à appeler.
listeArguments
- Un objet semblable à un tableau définissant les arguments à passer à
cible
lors de l'appel. Utilisernull
ouundefined
si aucun argument ne doit être fourni à la fonction. newCible
Facultatif- Le constructeur à utiliser. Voir également l'opérateur
new.target
. SinewCible
n'est pas présent, c'estcible
qui sera utilisé.
Valeur de retour
Un nouvelle instance de la cible indiquée, créée en l'appelant comme un constructeur (ou en appelant newCible
si elle est fournie) avec les arguments fournis.
Exceptions levées
Une exception TypeError
si cible
ou newCible
ne sont pas des constructeurs.
Description
Reflect.construct
permet d'appeler un constructeur avec un nombre d'arguments variable (ce qui peut également être fait avec l'opérateur de décomposition et l'opérateur new
).
var obj = new Toto(...args); var obj = Reflect.construct(Toto, args);
Exemples
Utiliser Reflect.construct()
var d = Reflect.construct(Date, [1776, 6, 4]); d instanceof Date; // true d.getFullYear(); // 1776
Utiliser le paramètre newCible
Pour plus d'informations sur la création de sous-classes, voir les classes et l'opérateur new.target
.
function unConstructeur() {} var résultat = Reflect.construct(Array, [], unConstructeur); Reflect.getPrototypeOf(résultat); // unConstructeur.prototype Array.isArray(résultat); // true
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Reflect.construct' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Reflect.construct' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | 49 | 42 (42) | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | 42.0 (42) | Pas de support | Pas de support | Pas de support |
Voir aussi
Étiquettes et contributeurs liés au document
Étiquettes :
Contributeurs à cette page :
SphinxKnight
Dernière mise à jour par :
SphinxKnight,