moin,
Aber warum kannst Du den Konstruktor nicht aufrufen? Das geht auch, wenn das Funktionsobjekt in einer Variablen steckt.
Sry, erläutere mir genauer: wo ist die Konstruktor Funktion die den ctor
-Parameter befüllt? Meinst du das in einer Funktion???
// Konstruktor
const Foo = function() {};
Foo.prototype.bar = '<default>';
Foo.prototype.qax = '<default>';
// Erzeuger mit Übergabewerten
const ctor = ( ctor, params ) => {
let instanz = Object.create(ctor.prototype);
params.forEach( param => instanz[ param.name ] = param.value );
return instanz;
};
// Aufruf des Erzeugers
const f = ctor( Foo, [
{ name: 'bar', value: 'Hello World' }
] );
Tests
f.bar // 'Hello World'
f.qax // '<default>'
f.tok // undefined
Hab's gerade in FF getestet und es geht.
Welche BuiltIn Kostruktor Funktion, die nicht selbst geschrieben istohgne new
operator, kann man verwendet um einen Instanz mit übergabewerten zu erzeugen?
Ich weis, dass nur sequenziell sowas geht...
const Foo = function() {};
Foo.prototype.bar = '<default>';
Foo.prototype.baz = '<default>';
let f = Object.create(Foo.prototype);
f.bar = 'Hello World';
// 'Hello World'
f.baz;
// '<default>'
Was nicht geht is sowas...
const f = Object.crerate( Foo.prototype. { bar: 'Hello World' } );
…bar
soll doch bitte n objekt sein und keine String-Property.
Mir ist bekannt das in JS der new
Operator ungern gesehen wird, da es ja nicht OO sondern OB ist.
Frist der new
-Operator mehr performance, wenn man ihn nicht den verwendet statt dessen den Object.create()
-Funktion und dann mit dem erzeugten Objekt protoypen setzt, genau wie bei der Objekt-Instanziierung???
lgmb
Sprachstörung