ES6 permette di estendere oggetti speciali. Quindi è possibile ereditare dalla funzione. Tale oggetto può essere chiamato come funzione, ma come posso implementare la logica per tale chiamata?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Qualsiasi metodo di classe ottiene riferimento all'istanza di classe tramite this. Ma quando viene chiamato come funzione, si thisriferisce a window. Come posso ottenere il riferimento all'istanza della classe quando viene chiamata come funzione?
super(x)(cioè passare a Function)? Non sono sicuro che Functionpossa effettivamente essere esteso però.
Error, tra gli altri.
Functionè semplicemente un costruttore di funzioni. L'implementazione della funzione deve essere passata al costruttore. Se non vuoi Smthaccettare un'implementazione, devi fornirla nel costruttore, ad es super('function implementation here').
Functioncostruttore (runtime) che è molto diverso da un'espressione di funzione (sintassi).