Javascript lernen | Teil 2 | private/public in Objekten

In Teil 1 versuchte ich zu erklären, dass Javascript doch nicht so schlecht ist, wie viele behaupten und das sich die Sprache doch sehr deutlich von Java und PHP unterscheidet. Im heutigen Teil werde ich Konstrukte zeigen, womit man die Visibilität in Objekten bei Javascript definieren kann.

Als erstes ein Sourcecode Beispiel:

var Auto = function(startBenzin) {
	//constructor
    //public variable
	this.benzinStand = startBenzin;

    //private variable
    var anzahlRaeder = 4;

    //global variable
    globalBlubb = 17;

    //public function
	this.schaueBenzin = function() {
            return "Der Benzinstand beträgt "+this.benzinStand+" Liter";
	};

    //private function
	var gasGeben = function() {
		this.benzinStand--;
	};
};

Wenn ich nun ein Objekt mittels

var golf = new Auto(5);

erzeuge, passiert folgendes:

Konstruktor

Der “Konstruktor” wird aufgerufen. Die Funktion, welche der Variablen Auto zugewiesen wurde, wird nun durchlaufen. Alle Variablen erhalten nun einen Wert (this.Benzinstand, anzahlRaeder, globalBlubb) und es werden Variablen neue Funktionen zugewiesen (this.schaueBenzin, gasGeben). Am Ende der Instanzierung ist der Typ von der Variable golf == object.

public

Alle Variablen und Funktionen, welche mit this.Variablenname erzeugt werden, sind public und können wie in anderen Sprachen von aussen z.B. mittels golf.schaueBenzin() aufgerufen werden.

private

Alle Variablen und Funktionen, welche mit var Variablenname erzeugt werden, sind private und können nur vom instanzierten Objekt selber aufgerufen werden.

global

Achtung! Variablen, welche überhaupt nicht deklariert werden (in diesem Fall globalBlubb) sind global, das heisst, obwohl sie im Objekt definiert wurden, haben sie im DOM Baum keine Referenz mehr auf golf und stehen im DOM Baum auf der oberstene Ebene.

4 Responses

  1. Der Hinweis unter „global“ auf den DOM-Baum ist irreführend. Das globale Objekt existiert in JavaScript immer, auch ohne DOM-Implementierung. Auch in Browsern ist üblicherweise document die DOM-Wurzel und nicht identisch mit dem globalen Objekt, das ist normalerweise window (muss aber auch nicht sein).

Leave a Reply

Your email address will not be published. Required fields are marked *