peterS.: Objekte (Literale) erben lassen

Beitrag lesen

hallo again Christian,

... Du haettest ruhig im alten thread weitermachen koennen.
   gewoehnlich werden die von einem OP zur sprache gebrachten
   probleme von den antwort gebenden solange verfolgt und/oder
   betreut, bis der OP und/oder der antwortende schlauer ist -

so wie ich jetzt auch in Deinem fall:

ich möchte mehreren Objekten, die alle verschieden sind,
die gleiche Grundfunktionalität zuweisen.
Dazu habe ich einen Basiskonstruktor geschrieben, der die
Grundfunktionalität beinhaltet:

function Base() {

...
}


>   
> Meine Objekte würde ich sehr gerne über ein Literal erzeugen,  
> da jedes meiner Objekte nur einmal existiert und alle  
> unterschiedlich sind! Ich brauche also keinen Konstruktor dafür.  
> ...  
> Wie bekomme ich an diese Objekte nun die Methoden der Base  
> Klasse dran (set und reset) ??  
>   
> Ich weiß dass ich es auf dem umständlichen Wege über einen  
> Konstruktor und prototype vererben kann:  
>   
> ~~~javascript

function Obj1Konstruktor()  

> {  
>    this.a = 1;  
> }  
> Obj1Konstruktor.prototype = new Base();  
> var obj1 = new Obj1Konstruktor();

Aber genau das möchte ich umgehen, da ich nicht noch jedes mal
einen Konstruktor schreiben will ... Habe schon verschiedenes
probiert wie:

var obj1 = {prototype:new Base(), a:1};

aber ging bisher alles nicht.

aehm ja, tut mir leid, dass ich Dich da am freitag auf den
   holzweg gefuehrt habe - ich war wohl nicht mehr ganz frisch.
   jetzt, wo ich Dein bsp. sehe, faellt es mir wie schuppen von
   den augen - so kann das auch nicht funktionieren, weil:

a) die prototypische vererbung, wie sie auch fuer Deine
      beispielhaft vorgegebenen methoden in frage kaeme, nur
      ueber den prototypen des jeweiligen objekt-konstruktors
      erfolgen kann - der konstruktor ist in Deinem fall immer
   b) [[Object]], denn objektliterale sind nun mal [Object]-
      objekte. und hier liegt der hase auch im pfeffer:
   c) [Object.prototype] laesst sich nicht ueberschreiben und
      ist und bleibt damit immer die atomare struktur {} - also
      selbst ein leeres [Object]-objekt.

hiermit revidiere ich meine am freitag gemachten aussagen.

vererbung, so wie Du sie moechtest, ist fuer objektliterale
   unerreichbar.

das fuers erste ... ich meld' mich gleich nochmal zurueck

bis dann - 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
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]