Was bedeutet "prototypische Vererbung" in JavaScript?

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

Alle Kommentare
javaguy Mai 18 (19:44)

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.

0 0 0
Noch keine Stimmen abgegeben
Durch die Nutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Außerdem werden teilweise auch Cookies von Diensten Dritter gesetzt. Genauere Informationen finden Sie in unserer Datenschutzerklärung sowie im Impressum.