Mit ES6 können spezielle Objekte erweitert werden. Es ist also möglich, von der Funktion zu erben. Ein solches Objekt kann als Funktion aufgerufen werden, aber wie kann ich die Logik für einen solchen Aufruf implementieren?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Jede Klassenmethode erhält über einen Verweis auf die Klasseninstanz this
. Aber wenn es als Funktion aufgerufen wird, this
bezieht sich auf window
. Wie kann ich den Verweis auf die Klasseninstanz erhalten, wenn sie als Funktion aufgerufen wird?
super(x)
(dh weitergeben an Function
)? Ich bin mir nicht sicher, ob Function
es tatsächlich erweitert werden kann.
Error
unter anderem Probleme bei der Erweiterung .
Function
einfach ein Funktionskonstruktor ist. Die Implementierung der Funktion muss an den Konstruktor übergeben werden. Wenn Sie Smth
eine Implementierung nicht akzeptieren möchten , müssen Sie sie im Konstruktor bereitstellen, d super('function implementation here')
. H.
Function
Konstruktor (Laufzeit), der sich stark von einem Funktionsausdruck (Syntax) unterscheidet.