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 :
class Smth extends Function { constructor(x) { super("return " JSON.stringify(x) ";"); } }
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.
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