Angenommen, wir machen müssen:Wie ES6 Klasse final (non-subclassible)
class FinalClass {
...
}
Wie es ändern, eine Ausnahme zu machen
class WrongClass extends FinalClass {
...
}
oder
new WrongClass(...)
zu erzeugen ? Vielleicht ist die naheliegendste Lösung ist die folgende im Konstruktor des FinalClass zu tun:
if (this.constructor !== FinalClass) {
throw new Error('Subclassing is not allowed');
}
Hat jemand eine sauberere Lösung anstatt diese Zeilen in jeder Klasse zu wiederholen, dass (wahrscheinlich mit einem Dekorateur) endgültig sein soll?
Interessante Frage. Gibt es einen Grund, warum du das versuchst? – gcampbell
Da letztlich alles auf Javascript (<5) kompiliert ist, wo solche Dinge nicht existieren und alles nur ein Objekt ist, das zur Laufzeit unendlich formbar ist, halte ich die Chancen dafür für schlecht. – deceze
Um den von @gcampbell implizierten Punkt stärker zu formulieren, erscheint mir das als eine schlechte Idee, grenzend an schrecklich. Zum Beispiel saugen Zeichenketten in Java keinen kleinen Teil, weil der Klasse viele nützliche Methoden fehlen und wurde als vorzeitige Leistung hack "endgültig". –