Hauptmenü

Untermenü

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