OOP mit JavaScript - Überschreiben - Bei Referenzen
1. Die lieben Ballermänner
Da die vorherigen Beispiele mit den Panzern doch wunderbar waren, machen wir direkt mit ihnen weiter. Konzentrieren wir uns daher wieder mal auf die Kanone. Scheint bei Männern wohl eine Fixierung auszulösen. Darum mache ich die jetzt kleiner!
Der Code
function Kampfpanzer()
{
this.kanone = 120;
this.schiessen = function()
{
alert ('Bumm bumm mit ' + this.kanone + 'mm-Kanone');
}
}
var pz_1 = new Kampfpanzer;
pz_1.kanone = 105;
pz_1.schiessen();
Die Erläuterung
... könnte ich mir eigentlich sparen. Wenn es da nicht eine Besonderheit gäbe. Denn die Eigenschaft kanone
wurde nur im
Objekt pz_1
überschrieben. Der Wert im Konstruktor selber bleibt erhalten. Das kann man sehr schön erkennen, wenn man ein
neues Objekt erzeugt und nur(!) die Methode schiessen
ausführt. Denn da hat man wieder ein ordentliches Kaliber.
var pz_2 = new Kampfpanzer;
pz_2.schiessen();
2. Überschreiben bei Aggregation
Da man hier in einer anderen Konstruktorfunktion ebenfalls nur mit einer Referenz/Instanz arbeitet, gilt hier dasselbe Prinzip. Allerdings müsst ihr euch vor Augen halten, dass Änderungen auch Auswirkung auf alle(!) anderen Objekte hat, die aus diesem Konstruktor erzeugt worden sind.
Der Ausgangscode
function Kampfpanzer()
{
this.kanone = 120;
this.schiessen = function()
{
alert ('Bumm mit ' + this.kanone + 'mm-Kanone');
}
}
function nochnPanzer()
{
var nochEiner = new Kampfpanzer;
nochEiner.kanone = 155;
nochEiner.schiessen();
}
var pz_1 = new nochnPanzer;
var pz_2 = new nochnPanzer;
So, jetzt hab ich die Kanone mal wieder größer gemacht, sonst reagiert noch einer von euch auf diese komischen Mails, wo es um blaue Pillen geht.
Erläuterung
Da sowohl das Objekt pz_1
als auch pz_2
aus derselben Konstruktorfunktion erzeugt wurden, haben beide Objekte
jetzt deutlich mehr in der Hose als üblich. Objekte, die aus den Original entstanden sind, müssen sich dagegen mit deutlich weniger
begnügen.
var pz_3 = new Kampfpanzer;
pz_3.schiessen();
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt