Stefan: Unterschied .base und .prototype

Hallo zusammen

Kann mir jemand erklären, was der Unterschied ist wenn ich die Superklasse eines Objekts so

this.base = Superklasse;
this.base();

anstatt mit der .prototype Eigenschaft setze?

Viele Grüsse
Stefan

  1. Kann mir jemand erklären, was der Unterschied ist wenn ich die Superklasse eines Objekts so

    this.base = Superklasse;
    this.base();

    so ist es keine Vererbung, sondern einfach nur eine Eigenschaft der Klasse. Mit prototype vererbst du die Eigenschaften.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
  2. Hallo,

    Kann mir jemand erklären, was der Unterschied ist wenn ich die Superklasse eines Objekts so

    this.base = Superklasse;
    this.base();

    anstatt mit der .prototype Eigenschaft setze?

    Wahrscheinlich ist damit beabsichtigt, dass nur diese Instanz (this) vom Superklassen-Konstruktor Eigenschaften und Methoden zugewiesen bekommt, nicht alle Instanzen des Konstruktors, von dem this abstammt.
    Genauer gesagt wird der Konstruktor »Superklasse« durch das Anhängen an die Instanz einfach im Kontext der Instanz ausgeführt.

    function Super () {  
       this.eigenschaft = "möp";  
    }  
      
    function Sub () {  
       ...  
    }  
      
    var instanz1 = new Sub();  
    var instanz2 = new Sub();  
    instanz1.base = Super; instanz1.base();  
    // Jetzt hat instanz1 »eigenschaft«  
    alert(instanz1.eigenschaft);  
    // instanz2 aber nicht  
    alert(instanz2.eigenschaft);
    

    Prototypische Vererbung wäre:

    Sub.prototype = new Super();  
    // dann hätten alle Instanzen die Eigenschaft  
    alert(instanz1.eigenschaft + "\n" + instanz2.eigenschaft);
    

    Mathias