ES6 permite estender objetos especiais. Portanto, é possível herdar da função. Esse objeto pode ser chamado como uma função, mas como posso implementar a lógica para essa chamada?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Qualquer método de classe obtém referência à instância de classe via this
. Mas quando é chamado como uma função, this
refere-se a window
. Como posso obter a referência à instância da classe quando ela é chamada como uma função?
super(x)
(ou seja, passá-lo para Function
)? Não tenho certeza se Function
realmente pode ser estendido.
Error
, entre outros.
Function
é simplesmente um construtor de função. A implementação da função deve ser passada para o construtor. Se você não quiser Smth
aceitar uma implementação, você tem que fornecê-la no construtor, ou seja super('function implementation here')
.
Function
construtor (tempo de execução), que é muito diferente de uma expressão de função (sintaxe).