[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/new.target [Back]  [Original]

new.target - JavaScript | MDN

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 English Always switch to English

new.target

Baseline Large disponibilit

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.

Dans cet article

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

Exemples

Utilisation de new.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 vaut undefined. Cela permet de dtecter si une fonction a t appele comme constructeur avec new :

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 console
Toto(); // lve l'exception avec "Toto doit tre appel avec new"

Utilisation de new.target dans les constructeurs

Utiliss 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 :

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

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-built-in-function-objects

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page