ES6 permite ampliar objetos especiales. Entonces es posible heredar de la función. Dicho objeto se puede llamar como una función, pero ¿cómo puedo implementar la lógica para dicha llamada?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Cualquier método de clase obtiene referencia a la instancia de clase a través de this
. Pero cuando se llama como función, se this
refiere a window
. ¿Cómo puedo obtener la referencia a la instancia de la clase cuando se la llama como función?
super(x)
(es decir, pasarlo a Function
)? Sin Function
embargo, no estoy seguro de si realmente se puede extender.
Error
, entre otros.
Function
es simplemente un constructor de funciones. La implementación de la función debe pasarse al constructor. Si no desea Smth
aceptar una implementación, debe proporcionarla en el constructor, es decir super('function implementation here')
.
Function
constructor (tiempo de ejecución) que es muy diferente de una expresión de función (sintaxis).