peterS.: Konstruktoren

Beitrag lesen

gruss Mathias,

Der Parameter ist an sich überflüssig.

warum, Du weisst doch noch gar nicht, was der OP bewrkstelligt haben moechte.
   [RegExp]-objekte beispielsweise koennen initial nicht nur ueber die literal-
   schreibweise sondern auch ueber ein string-argument des konstruktors erzeugt
   werden - darueber hinaus lassen sich schon existierende [RegExp]-objekte
   ueber wiederum ein string-argument der methode [compile] reinitialisieren.

Einen „Konstruktor“ gibt es in JS-„Klassen“ nicht,

wie bitte? JavaScript bietet wirklich die vielfaeltigsten moeglichkeiten
   erzeugermuster fuer massgeschneiderte objekte umzusetzen; das fuer diese
   sprache jedoch typische vererbungskonzept, alle erdenklichen eigenschaften,
   sinnvollerweise aber doch eher methoden, ueber das [prototype]-objekt zu
   referenzieren und diese im kontext des aufrufenden objekts auszufuehren,
   laesst sich hingegen ausschliesslich mit konstruktorfunktionen realisieren
   - kurz: prototypische vererbung erfolgt ueber den konstruktor eines objekts.

hallo auch David,

ich würde gerne wissen ob man in Javascript auch einen Konstruktor
schreiben kann. Man ruft also z. B. das Objekt auf.

a = new MyObj(param);

Und nun soll es in MyObj einen Konstruktor geben, der den Wert von
param entgegennimmt, verarbeitet und dementsprechent handalt. Sagen,
wir param ist true, dann soll eine Funktion "init" ausgeführt werden,
ist der Wert false, dann soll diese Funktion nicht ausgeführt werden.
Lässt sich das irgendwie machen?

ein moeglicher ansatz koennte folgendermassen aussehen:

~~~javascript var SomeObject = function (param) {

//falls [[SomeObject]] selbst ein objekt als [prototype]n referenziert:
     this.constructor = arguments.callee;

if (param) { // bedarf einer etwas genaueren pruefung!

//this.initialize.call(this, param); // oder universeller:
       this.initialize.apply(this, arguments);
     }
   };
   SomeObject.prototype.initialize = function (/param/) { /* damit liesse
     sich der konstruktorkram immerhin fuer alle oeffentlichen - bindung an
     [this] - eigenschaften auslagern */

this.someProperty = arguments[0];
   };

  
  
  
  
  
   so long - peterS. - pseliger@gmx.net  
  
  

-- 
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.  
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - [Douglas Crockford](http://javascript.crockford.com/)  
  
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]