Objektorientierung in JavaScript/Datenkapselung, Vererbung, Polymorphie/Vererbung

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
==Das Klonen von Objekten==

Ein Prototyp dient als Vorlage für neue Objekte. Jedes bereits vorhandene Objekt kann ein Prototyp sein. Die neuen Objekte erhalten alle Eigenschaften und Methoden ihres Prototypen: Sie ''erben'' diese.
In JavaScript können Objekte mit der Anweisung <tt>Object.Create(prototype)</tt> erzeugt werden.

<code id="542717510qff3042016">
var altmetall = {
  masseInKg: 20,
  form : "Quader"
};
var neumetall = Object.create(altmetall);
neumetall.form = "Zylinder";
</code>
<run id="542717e5403042016">
neumetall.masseInKg;
</run>
Das neue Objekt hat die gleiche Masse wie das Altmetall, aber es hat eine andere Form. Objekte können die Eigenschaften und Funktionen ihrer Prototypen ändern oder neue hinzufügen.
Die Eigenschaft <tt>masseInKg</tt> des Objekts <tt>neumetall</tt> referenziert (verweist auf) die Eigenschaft von<tt>altmetall</tt>. Das heißt, es speichert den Wert der Variablen nicht selbst, sondern leitet den Aufruf an den Prototypen weiter.
<code id="5427181003042016">
altmetall.masseInKg= 50;
</code>
<run id="5426181003042016g">
neumetall.masseInKg;
</run>
Der Wert einer Eigenschaft eines Objekts ändert sich, wenn sich der Wert des Prototypen ändert.

Ob ein Objekt eine eigene Eigenschaft besitzt oder diese durch seinen Prototypen erlangt, kann man durch <tt>hasOwnProperty("property")</tt> überprüfen, welche alle Objekte von <tt>Object</tt> erben.

<run id="5427181403042016">
neumetall.hasOwnProperty("masseInKg") + "\n" + neumetall.hasOwnProperty("form");
//Masse wird geerbt, Form wird geändert
</run>