Maison >interface Web >js tutoriel >Comment les classes ES6 peuvent-elles être utilisées pour étendre les fonctions et accéder aux données d'instance ?
Extension de fonction avec les classes ES6
Dans ES6, des 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 d'une 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ésumation de 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é, L'extension de 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 donner accès aux données d'instance lors de l'appel de la fonction étendue.
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!