ES6 umożliwia rozszerzenie specjalnych obiektów. Więc możliwe jest dziedziczenie z funkcji. Taki obiekt można wywołać jako funkcję, ale jak mogę zaimplementować logikę dla takiego wywołania?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Każda metoda klasy otrzymuje odwołanie do instancji klasy za pośrednictwem this
. Ale kiedy jest wywoływany jako funkcja, this
odnosi się do window
. Jak mogę uzyskać odwołanie do instancji klasy, gdy jest wywoływana jako funkcja?
PS: To samo pytanie po rosyjsku.
super(x)
(tj. Przekaż to dalej Function
)? Nie jestem pewien, czy Function
rzeczywiście można go przedłużyć.
Error
m.in.
Function
jest to po prostu konstruktor funkcji. Implementację funkcji należy przekazać konstruktorowi. Jeśli nie chcesz Smth
akceptować implementacji, musisz podać ją w konstruktorze, tj super('function implementation here')
.
Function
konstruktora (środowiska wykonawczego), który bardzo różni się od wyrażenia funkcyjnego (składni).