Was bedeutet "prototypische Vererbung" in JavaScript?

Was bedeutet "prototypische Vererbung" (prototypal inheritance) in JavaScript? Was ist der Unterschied zum Vererbungsmodell in Java?

Noch keine Stimmen abgegeben
Noch keine Kommentare
  • 18 Mai 2019

    In JavaScript gibt es keine Klassen. Eine Klasse in Java ist wie ein Bauplan für ein Objekt. Klassen können dann von anderen Klassen erben und erstellen Vererbungsbeziehungen.

    Bei der prototypischen Vererbung erbt ein Objekt direkt über die "Prototypen-Kette" von einem anderem Objekt (Object.__proto__ ):

    var TestObj = function() {}
    TestObj.prototype.alert = function() { window.alert(arguments ? arguments[0] : ''); }
    
    var testObj = { foo: 'bar' };
    testObj.__proto__ = TestObj.prototype;
    testObj.alert('test2');
    
    var testObj_1 = new TestObj();
    console.log(testObj.__proto__ == testObj_1.__proto__);
    

    Jedes Objekt in JavaScript besitzt die __proto__ Eigenschaft, die auf das Objekt zeigt, von dem das Objekt alle Eigenschaften erbt: testObj.__proto__ = TestObj.prototype; .

    prototype ist dagegen eine spezielles Objekt von Funktionen, die als Objekt-Konstruktor aufgerufen werden über den new Operator. Dieses spezielle Objekt beinhaltet alle Eigenschaften, die das erzeugte Objekt dann bekommt.

    Noch keine Stimmen abgegeben
    Noch keine Kommentare