Maison > interface Web > js tutoriel > le corps du texte

Qu'est-ce que « new.target » et comment fonctionne-t-il dans les classes ES6 ?

Linda Hamilton
Libérer: 2024-10-30 03:52:03
original
663 Les gens l'ont consulté

 What is

Comprendre "new.target" dans ECMAScript 2015

Dans la spécification ECMAScript 2015, le mot-clé "new.target" est introduit et brièvement mentionné trois fois. Bien que MDN fournisse un certain contexte, il reste quelque peu vague.

Qu'est-ce que « new.target » ?

« new.target » est une méta-propriété, également connue sous le nom de Nouvelle cible. Il récupère la valeur actuelle du [[NewTarget]] slot interne de l'environnement de fonction non-flèche. Cette valeur est définie lorsqu'une fonction est invoquée avec le mot-clé "new".

Objectif de "new.target"

Son objectif principal est de déterminer si une fonction a été appelée en tant que constructeur ou non. De plus, il joue un rôle crucial dans l'implémentation des classes ES6.

Comment les classes ES6 utilisent "new.target"

Lorsqu'un constructeur de classe ES6 est invoqué via " new X", la valeur "this" n'est pas initialisée. L'objet n'est pas encore créé. Cependant, l'instance doit hériter du .prototype du constructeur initialement appelé.

"new.target" suit le constructeur "le plus externe" qui a reçu l'appel "new" lors des invocations super(). La procédure OrdinaryCreateFromConstructor utilise "new.target" au lieu du constructeur actuellement exécuté pour garantir l'héritage correct.

Exemple :

<code class="javascript">class Parent {
  constructor() {
    console.log(new.target); // Child!
  }
}
class Child extends Parent {
  constructor() {
    super();
    console.log(this);
  }
}

new Child;</code>
Copier après la connexion

Dans cet exemple, "new .target" affichera "Child" dans le constructeur Parent, indiquant qu'il a été appelé avec le mot-clé "new".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!