V. 8.7 (27.03.2012)

Infos

Download

Theorie OOP mit JavaScript

Schnellsuche

OOP mit JavaScript - Überschreiben - Privates

1. Missverständnisse

... gibt es beim Überschreiben immer wieder. Vor allem, wenn es um private Eigenschaften und Methoden geht. Keine Angst, ist mir auch so gegangen, darum werde ich an dieser Stelle endlich mal das Licht der Erkenntnis über euch zum Leuchten bringen. Auf dass euer Geist erhellt werde.

Der Code


function Kampfpanzer()
{
  var 
kanone     120;
  
this.schiessen = function()
  {
    
alert ('Bumm mit ' kanone 'mm-Kanone');
  }
}
function 
nochnPanzer()
{
  var 
kanone 155;
}
nochnPanzer.prototype = new Kampfpanzer;

var 
pz_1 = new nochnPanzer;
pz_1.schiessen();

Erläuterung

Da ich ja schon vorher sagte, dass man sowohl beim Prototyping als auch der Aggregation nur Zugriff auf die öffentlichen Eigenschaften und Methoden des "Mutter"-Konstruktors hat, kann das hier natürlich nicht funktionieren.

2. Aber

... was passiert, wenn man zum Beispiel eine Eigenschaft im "Kind"-Konstruktor als öffentlich festlegt? Funktioniert dann das Überschrieben? Nö! Man fügt in dem Fall einfach eine weitere Eigenschaft hinzu.


function Kampfpanzer()
{
  var 
kanone     120;
  
this.schiessen = function()
  {
    
alert ('Bumm mit ' kanone 'mm-Kanone');
    
alert ('Bumm mit ' this.kanone 'mm-Kanone');
  }
}
function 
nochnPanzer()
{
  
this.kanone 155;
}
nochnPanzer.prototype = new Kampfpanzer;

var 
pz_1 = new nochnPanzer;
pz_1.schiessen();

Denn in JavaScript, man glaubt es kaum, ist auch so was möglich, ohne dass sich beide Eigenschaften in die Quere kommen.


function Kampfpanzer()
{
  var 
kanone     120;
  
this.kanone    155;
  
this.schiessen = function()
  {
    
alert ('Bumm mit ' kanone 'mm-Kanone');
    
alert ('Bumm mit ' this.kanone 'mm-Kanone');
  }
}

Mein Tipp

Lasst um Gottes Willen die Finger davon. Da landet ihr ganz schnell in Teufels Küche.

weiter zum nächsten Abschnitt