Maison > interface Web > js tutoriel > Comment les appels de méthodes statiques se comportent-ils dans les classes ES6 avec héritage et remplacement ?

Comment les appels de méthodes statiques se comportent-ils dans les classes ES6 avec héritage et remplacement ?

Mary-Kate Olsen
Libérer: 2024-11-17 17:28:02
original
758 Les gens l'ont consulté

How do Static Method Calls Behave in ES6 Classes with Inheritance and Overriding?

Appel de méthodes statiques à partir des méthodes de classe ES6

Dans les classes ES6, il existe deux manières courantes d'appeler des méthodes statiques : via le constructeur ou via le nom de la classe lui-même. Bien que les deux approches soient valides, elles présentent des comportements distincts dans le contexte de l'héritage avec des méthodes statiques remplacées.

L'utilisation de this.constructor pour faire référence à la propriété statique entraîne une répartition dynamique, ce qui signifie qu'elle fait référence à la classe du courant. exemple. Ceci est utile lorsqu'il s'agit de méthodes statiques remplacées, comme le montre l'exemple ci-dessous :

class Super {
  static whoami() {
    return "Super";
  }
}
class Sub extends Super {
  static whoami() {
    return "Sub";
  }
}

new Sub().whoami(); // "Sub"
Copier après la connexion

Dans ce cas, la méthode statique whoami est remplacée dans la classe Sub. Lorsqu'il est appelé via this.constructor, il fait référence à la classe Sub et renvoie correctement "Sub".

D'autre part, l'utilisation du nom de la classe pour faire référence à la propriété statique garantit un accès constant à la méthode statique d'origine, même s'il est annulé. Par exemple :

class AnotherSuper {
  static whoami() {
    return "AnotherSuper";
  }
}
class AnotherSub extends AnotherSuper {
  static whoami() {
    return "AnotherSub";
  }
}

AnotherSub.whoami(); // "AnotherSuper"
Copier après la connexion

Même si whoami est remplacé dans AnotherSub, l'appeler via le nom de la classe ("AnotherSub") renvoie toujours "AnotherSuper" car il fait référence à la propriété statique de la classe AnotherSuper.

En fin de compte, le choix de l’approche à utiliser dépend du comportement attendu. Si la propriété statique doit toujours faire référence à la classe actuelle, utilisez la référence explicite (this.constructor). Sinon, utilisez le nom de la classe pour garantir un accès constant à la méthode statique d'origine.

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!

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