| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/new.target | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2017.
La syntaxe new.target est disponible dans toutes les fonctions et permet entre autres de tester si une fonction ou un constructeur a t appel avec new. Dans les constructeurs, il fait rfrence au constructeur invoqu par new. Dans les appels de fonction normaux , new.target vaut undefined.
function Foo() {
if (!new.target) {
throw new TypeError("calling Foo constructor without new is invalid");
}
}
try {
Foo();
} catch (e) {
console.log(e);
// Expected output: TypeError: calling Foo constructor without new is invalid
}
new.target;
La syntaxe new.target se compose du mot-cl new, suivi d'un point puis d'un nom de proprit (ici target). Gnralement et par ailleurs, new. est utilis comme contexte pour accder une proprit. Ici, new. ne fait pas rellement rfrence un objet. Dans les appels de constructeurs, new.target fait rfrence au constructeur qui a t appel par new. Cette syntaxe permet donc de rcuprer cette valeur.
new.target est une mta-proprit, disponible pour toutes les fonctions. Dans les fonctions flches, new.target fait rfrence au new.target de la fonction englobante.
new.target dans les appels de fonctionUtilis dans les appels de fonctions classiques (autrement dit pour les fonctions qui ne sont pas des constructeurs), new.target vaut undefined. Cela permet de dtecter si une fonction a t appele comme constructeur avec new :
function Toto() {
if (!new.target) throw "Toto() doit tre appel avec new";
console.log("Toto instanci avec new");
}
new Toto(); // affiche "Toto instanci avec new" dans la console
Toto(); // lve l'exception avec "Toto doit tre appel avec new"
new.target dans les constructeursUtiliss dans les appels de constructeurs de classe, new.target fait rfrence au constructeur utilis directement avec new. C'est galement le cas quand le constructeur est prsent dans une classe parente et est dlgu depuis le constructeur fils :
class A {
constructor() {
console.log(new.target.name);
}
}
class B extends A {
constructor() {
super();
}
}
var a = new A(); // affiche "A"
var b = new B(); // affiche "B"
class C {
constructor() {
console.log(new.target);
}
}
class D extends C {
constructor() {
super();
}
}
var c = new C(); // function C()
var d = new D(); // function D()
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-built-in-function-objects |
Cette page a t modifie le 17 fvr. 2025 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |