JS TOOLSJavascript Erstellen von dynamischen Objektklasse
Angular 1.5.x & lodash 4.x
FRAGE
Ich versuche, ein Objekt Fabrik Muster zu erstellen, das Objekt erstellt/Klassen . In meinem Beispiel unten erstelle ich Objektmodelle für Inhaltstypen, z. Artikel, Dokument, Bilder, usw. Angesichts meiner Fähigkeiten Beschränkungen replizieren ich das Artikel Beispiel unten für jeden Inhaltstyp. Gibt es in JavaScript eine Möglichkeit, eine dynamische Objektklasse mit einem eindeutigen Prototyp zu erstellen.
CURRENT ANSATZ
// constructor injection
_Constructor.$inject = [];
function _Constructor() {
function __constructor(data, keys) {
_.assign(this, _.pick(data, keys));
}
return __constructor;
}
// one of many content type models
Article.$inject = ['__constructor'];
function Article(__constructor) {
function Article(data) {
var fillables = Object.freeze(['id','title','subtitle','body','body']);
__constructor.call(this, data, fillables);
}
Article.prototype = Object.create(__constructor.prototype);
Article.prototype.constructor = Article;
return Article;
}
IDEAL ERGEBNIS
Erstellen eines Inhaltstyp Modell Fabrik-Muster, das mich einzigartigen Inhaltstyp Objektmodelle erstellen können. Pseudo Beispiel:
var documentFillables = Object.freeze(['id', 'name', 'body']),
documentData = {id:1,name:'My Document', body: 'coolbody stuff'},
Document = new ModelFactory('Document', documentData, documentFillables),
articleFillables = Object.freeze(['id', 'title', 'subtitle']),
articleData = {id:1,title:'My Article', subtitle: 'My Subtitle'},
Article = new ModelFactory('Article', articleData, articleFillables);
Hinweis ich gespielt habe, um mit merge, erweitern und zu klonen und zwar kann ich replizieren und erweitern Objekte, die ich mit einem fairen Betrag von Code-Redundanz am Ende und/oder generische Objekte, also haben viele ModelFactory()
aber nein Article()
.