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 this
ré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 Function
peut être prolongé.
Error
, entre autres.
Function
s'agit simplement d'un constructeur de fonction. L'implémentation de la fonction doit être passée au constructeur. Si vous ne voulez Smth
pas accepter une implémentation, vous devez la fournir dans le constructeur, ie super('function implementation here')
.
Function
constructeur (runtime) qui est très différent d'une expression de fonction (syntaxe).