Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Expressions et opérateurs
  5. new.target

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

new.target

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 2017.

La syntaxenew.target est disponible dans toutes les fonctions et permet entre autres de tester si une fonction ou un constructeur a été appelé avecnew. Dans les constructeurs, il fait référence au constructeur invoqué parnew. Dans les appels de fonction « normaux »,new.target vautundefined.

Exemple interactif

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}

Syntaxe

js
new.target;

Description

La syntaxenew.target se compose du mot-clénew, suivi d'un point puis d'un nom de propriété (icitarget). Généralement et par ailleurs,new. est utilisé comme contexte pour accéder à une propriété. Ici,new. ne fait pas réellement référence à un objet. Dans les appels de constructeurs,new.target fait référence au constructeur qui a été appelé parnew. Cette syntaxe permet donc de récupérer cette valeur.

new.target est une méta-propriété, disponible pour toutes les fonctions. Dansles fonctions fléchées,new.target fait référence aunew.target de la fonction englobante.

Exemples

Utilisation denew.target dans les appels de fonction

Utilisé dans les appels de fonctions « classiques » (autrement dit pour les fonctions qui ne sont pas des constructeurs),new.target vautundefined. Cela permet de détecter si une fonction a été appelée comme constructeur avecnew :

js
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 consoleToto(); // lève l'exception avec "Toto doit être appelé avec new"

Utilisation denew.target dans les constructeurs

Utilisés dans les appels de constructeurs de classe,new.target fait référence au constructeur utilisé directement avecnew. C'est également le cas quand le constructeur est présent dans une classe parente et est délégué depuis le constructeur fils :

js
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()

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-built-in-function-objects

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2026 Movatter.jp