"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment les classes ES6 peuvent-elles être utilisées pour étendre les fonctions et accéder aux données d'instance ?

Comment les classes ES6 peuvent-elles être utilisées pour étendre les fonctions et accéder aux données d'instance ?

Publié le 2024-11-12
Parcourir:172

How can ES6 Classes be Used to Extend Functions and Access Instance Data?

Extension de la fonction avec les classes ES6

Dans ES6, les objets spéciaux peuvent être étendus, permettant l'héritage de l'objet Function. Bien qu'il soit possible d'appeler de tels objets en tant que fonctions, la mise en œuvre de la logique pour cet appel peut s'avérer difficile.

Transmission de données d'instance à un appel de fonction

Lors de l'appel d'une classe en tant que fonction , cela fait référence à l'objet window. Pour accéder aux données d'instance, deux approches sont disponibles :

  1. Hardcoding : Forcer le super appel à attendre une chaîne de code contenant les données d'instance.
class Smth extends Function {
  constructor(x) {
    super("return "   JSON.stringify(x)   ";");
  }
}
  1. Utilisation d'une fermeture : Renvoie une fonction de fermeture qui accède aux variables d'instance.
class Smth extends Function {
  constructor(x) {
    function smth() { return x; };
    Object.setPrototypeOf(smth, Smth.prototype);
    return smth;
  }
}

Résumer l'extension de fonction

Une approche plus généralisée consiste à créer une classe ExtensibleFunction qui gère l'extension :

class ExtensibleFunction extends Function {
  constructor(f) {
    return Object.setPrototypeOf(f, new.target.prototype);
  }
}

Cette classe peut ensuite être utilisée pour étendre des classes spécifiques :

class Smth extends ExtensibleFunction {
  constructor(x) {
    super(() => { return x; }); // closure
  }
}

En résumé, étendre Function avec les classes ES6 permet d'hériter du comportement de la fonction tout en personnalisant la logique d'appel. Différentes approches peuvent être utilisées pour fournir l'accès aux données d'instance lors de l'appel de la fonction étendue.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729462035. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3