ES6 Dynamischen Klassennamen

Ich habe experimentiert mit ES6-Klassen und Frage mich, wenn Sie ändern, können Klassennamen dynamisch? Zum Beispiel

class [Some dynamic name] {}; 
  • Warum willst du einen dynamischen Namen für eine Klasse? Was würde der Punkt sein?
  • Ich Baue Modelle, die ich will nicht zu hart code, dem class-Schlüsselwort legt die "das.Konstruktor.name" - Eigenschaft, die unveränderlich ist. Wenn ich könnte, erstellen Sie dynamisch, es wird diese Eigenschaft festgelegt ist richtig für mich. Die Verwendung von eval, scheint nicht den richtigen Tipp an alle.
  • Das sagt alles, wirklich. Die Instanz sollte dynamisch sein, nicht deine Klasse Vorlage, aber wenn du überzeugt bist das ist der richtige Ansatz, können Sie einfach erstellen Sie eine standard-Funktion mit der Function Konstruktor und der Prototyp als hätten Sie in ES5. Oder verwenden Sie einen task laufen wie Gulp/Grunt zum generieren der Klassen pre-build
  • constructor.name ist nicht unveränderlich.
  • Sie werden auch wollen einen Blick auf Ist es nicht-eval Weg, um erstellen Sie eine Funktion mit einem Laufzeit-bestimmt-name? (die Werke für classes genauso gut)
  • Wenn mit 5 Klassen, dann let tmp = { [name](){} }; und den Zugriff auf benannte Funktion o[name]. Wäre cool, wenn wir das tun könnten, die mit den Klassen: let o = { class [name] {} }.
  • Es ist nur Lesen.
  • konfigurierbar ist. Sie können ihn überschreiben, wenn Sie möchten.
  • Kann man dann erläutern, wie es zu tun mit einer Klasse?
  • Nur Object.defineProperty(constructor, "name", {value:…}). Sie können auch hinzufügen einer static name() { … } - Methode oder die get auf die Klasse selbst.
  • Ein Anwendungsfall ist, Dinge zu schaffen, die wrap/von anderen Klassen abgeleitet werden, wie ein höherer Bestellung von Komponenten. Es ist viel mehr nützlich, um die zugrunde liegende Klasse name (oder eine Variante davon) ausgesetzt als die Sache, die ihn geändert.
  • Ich kam hierher auf der Suche nach etwas (lese-dynamic-Klasse-Erstellung), aber Ihren Kommentar "verwenden eines task läuft wie Gulp/Grunt zum generieren der Klassen" schickt mich auf eine andere Richtung, das löst eine Menge Probleme, die ich gar nicht gedacht aus. Danke ......
  • Das sagt alles, wirklich. Die Instanz sollte dynamisch sein, nicht deine Klasse Vorlage. Ich sehr einverstanden. Aus Java, das ist sehr statisch, ich Schätze JS dynamisch jeden Tag mehr. Ich möchte um einen Klassennamen dynamisch, so dass meine Klasse nicht mehr anonym sein. Und ich möchte Klassen dynamisch bin, weil ich arbeite auf eine Bibliothek erstellen und verwenden von Mixins in Verbindung zu erreichen Mehrfachvererbung mit ES6-Klassen. Je länger ich über die klassische Vererbung, die mehr ich haben immer davon überzeugt, dass mit einfacher Vererbung nicht schneiden Sie es. JS ist fantastischen, weil es ist dynamisch, nicht trotz es.
  • Gut gesagt. Ich landete hier, weil ich versuche, das gleiche zu tun. Ich habe experimentiert mit class factory Mixins in Verbindung, und auch ein tool wie class Foo extends multiple(One, Two, Three) {...} verbindet die Klassen zusammen mit Proxy. Der wirkliche Grund ist, ich möchte dynamische Klasse Benennung ist, weil ich dann eine user-Klasse-Skillung und erzeugen einer Klasse, basierend auf einem bestimmten Namen, und APIs wie Class('Foo').extends(One, Two, { ... }) which automatically generates a class that duals as class and class-factory mixin. We could also transpile normal class Foo extends (Eins, Zwei, Drei) {}`
  • Etc. Es gibt zu viele Dinge, die wir tun könnten, mit dynamischen features (aber wenn nur super waren und dynamischen statt statischen).
  • Bitte beachten Sie auch meine Bibliothek, Mikrofone und lassen Sie mich wissen, ob es für Ihre Zwecke geeignet sind.
  • Wir suchen weitere Mitarbeiter und es wäre toll, wenn könnten wir erfinden ein großes Rad zusammen 🙂
  • Geantwortet, in dem GitHub-repo. 🙂

InformationsquelleAutor simon-p-r | 2015-11-09
Schreibe einen Kommentar