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 this
riferisce 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 Function
possa 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 Smth
accettare un'implementazione, devi fornirla nel costruttore, ad es super('function implementation here')
.
Function
costruttore (runtime) che è molto diverso da un'espressione di funzione (sintassi).