ES6 permet d'étendre des objets spéciaux. Il est donc possible d'hériter de la fonction. Un tel objet peut être appelé en tant que fonction, mais comment puis-je implémenter la logique d'un tel appel?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Toute méthode de classe obtient une référence à l'instance de classe via this. Mais quand il est appelé en tant que fonction, se thisréfère à window. Comment puis-je obtenir la référence à l'instance de classe lorsqu'elle est appelée en tant que fonction?
super(x)(c'est-à-dire le transmettre à Function)? Je ne sais pas si Functionpeut être prolongé.
Error, entre autres.
Functions'agit simplement d'un constructeur de fonction. L'implémentation de la fonction doit être passée au constructeur. Si vous ne voulez Smthpas accepter une implémentation, vous devez la fournir dans le constructeur, ie super('function implementation here').
Functionconstructeur (runtime) qui est très différent d'une expression de fonction (syntaxe).