Don P: Vererbungshierarchie ?!?

Beitrag lesen

Hallo,

Das ist schon klar, das Problem ist aber wenn ich im Kontruktor Parameter brauche, was dann?

var obj = function(name) {

this.name = name || 'default';
}
var newObj = object(obj);
var newObj2 = object(obj);
alert( newObj.name + '\n' + newObj2.name );

  
Wer macht denn sowas ;-)  
  
Das ist ja kein "normaler" Konstruktor mehr, sondern einer, der das zu erzeugende Objekt zuerst aus Parametern zusammenbasteln muss. Für solche speziellen Fälle kann man ja weiterhin mit Konstuktoren und "new" arbeiten.  
  
Oder man bastelt sich (wie ich) eine weitere kleine Helferfunkrion:  
  
~~~javascript
  
      var object = function(o){function F(){}F.prototype=o;return new F();};  
      var oobject = function(s,t){var c=object(s);for(var p in t){c[p]=t[p];}return c;}  
  
      var obj = {  
  
          name: 'default'  
      }  
  
      var newObj = object(obj);  
      var newObj2 = object(obj);  
      alert( newObj.name + '\n' + newObj2.name );      // 2 mal 'default' vom Prototyp  
  
      var newObj = oobject(obj, {name: 'Rumpelstilz'});  
      var newObj2 = oobject(obj, {name: 'Königin'});  
      alert( newObj.name + '\n' + newObj2.name );     //'Rumpelstilz', 'Königin' von eigenen Eigenschaften  
  
      delete newObj.name;                             // eigene Eigenschaft wieder entfernen  
      alert( newObj.name + '\n' + newObj2.name );     // 'default' vom Prototyp, 'Königin' von eigener Eigenschaft  

Als zweiten Parameter übergibt man "oobject" einfach ein Objekt, dessen Eigenschaften/Methoden das neue Objakt dann selbst haben soll, d.h. diese überschreiben den Wert vom Prototyp, bzw. eigentlich verstecken sie ihn nur. Wenn man wie im Beispiel so eine eigene Eigenschaft dann wieder entfernt, scheint wieder der Prototyp durch.

Um z.B. ein Objekt zu klonen, das alle Eigenschaften selbst hat, notiert man einfach: var newObj = oobject(obj, obj);

Gruß, Don P

--
sh:( fo:) ch:? rl:( br:] n4:~ ie:% mo:? va:{ js:) de:/ zu:] fl:( ss:| ls:&
0 67

Vererbungshierarchie ?!?

Kurt Z
  • javascript
  1. 0
    Struppi
    1. 0
      molily
    2. 0
      Don P
      1. 0
        Kurt Z
        1. 0
          Struppi
          1. 0
            Don P
            1. 0
              Struppi
              1. 0
                Don P
                1. 0
                  Struppi
                  1. 0
                    Don P
                    1. 0
                      Struppi
                      1. 0
                        Don P
                        1. 0
                          Struppi
                          1. 0
                            Don P
                      2. 0
                        Kurt Z
                        1. 0
                          Struppi
                          1. 0
                            Kurt Z
                            1. 0
                              Struppi
                              1. 0
                                Kurt Z
                                1. 0
                                  Struppi
                                  1. 0
                                    Kurt Z
                                    1. 0
                                      LanX²
                                    2. 0
                                      Struppi
                                      1. 0
                                        Kurt Z
                                        1. 0
                                          Kurt Z
                                        2. 0
                                          Struppi
                                          1. 0
                                            Kurt Z
                              2. 0
                                Don P
              2. 0
                LanX²
                1. 0

                  Function.prototype.begetObject

                  LanX²
                  1. 0
                    Don P
                    1. 0

                      Knobelaufgabe

                      LanX²
                      1. 0
                        Don P
                    2. 0
                      molily
                      1. 0
                        Kurt Z
                        1. 0

                          Please beget it!

                          LanX²
                          1. 0
                            Kurt Z
                          2. 0
                            Don P
                            1. 0
                              LanX²
                              1. 0
                                Don P
                              2. 0

                                Iterator

                                KurtZ
                                1. 0
                                  LanX
                      2. 0
                        Don P
        2. 0

          new Object(x) statt object(x)

          Kurt Z
          1. 0
            Murphy
            1. 0
              Kurt Z
              1. 0
                Don P
              2. 0
                Murphy
                1. 0
                  Kurt Z
                2. 0
                  molily
  2. 0
    LanX²
  3. 0
    molily
  4. 3

    __proto__ chain

    LanX²
    1. 0
      LanX²
      1. 0
        Kurt Z
    2. 1
      molily
  5. 0

    JS-Version?

    Kurt Z
    1. 0
      Kurt Z
      1. 0
        molily
        1. 0
          molily
    2. 0
      molily
      1. 0
        Kurt Z
        1. 0
          molily
          1. 0
            Kurt Z
  6. 0

    VIELEN DANK!!!

    Kurt Z
    1. 0
      Struppi