Hauptmenü

Untermenü

OOP/DOM-Scripting JavaScript - Praxistutorial 1 - Die Variablen

1. Die Abschnitte

2. Aufgepasst!

Was jetzt kommt, ist sehr wichtig! Und zwar geht es darum, wie man von Methoden unterschiedlicher Sichtbarkeit auf Variablen unterschiedlicher Sichtbarkeit zugreifen kann. Als Beispiel nehmen wir mal die Parameterübergabe der Referenzvariablen. Das haben wir so gemacht.


var mymenue = new animateMenue(1315);

Aus gutem Grund. Denn nun können wir die entsprechenden Variablen als privat deklarieren und die Werte entsprechend zuweisen, auf die dann alle Methoden Zugriff haben.


function animateMenue (beginendtime)
{
  var start begin;
  var stop  end;
  var zeit  time;
  ...
}

3. Die Alternative

... zeige ich euch nur, damit ihr wisst, dass es in JavaScript auch noch andere Möglichkeiten gibt. In diesem Fall legen wir die Variablen als öffentlich fest und weisen die Werte über die Referenzvariable / das Objekt zu. Das sähe dann so aus.


function animateMenue ()
{
  this.start null;
  this.stop  null;
  this.zeit  null;
  ...
}
var mymenue = new animateMenue();
mymenue.start 1;
mymemue.stop  31;
mymenue.zeit  5;

Hinweis

Bei der Variante mit this.variablenname muss man immer direkt einen Wert zuweisen, in diesem Fall habe ich null genommen. Der bedeutet einfach gesagt gar nichts. Der Unterschied zu this.variablenname = ''; ist einfach zu erklären. Bei letzterem bekommen wir bei einem typeof als Ergebnis ein string zurückgeliefert, bei ersterem nur das übliche object.

Der Haken

Eigentlich würde diese Variante auch wunderbar funktionieren, wenn die Sache nicht einen riesengroßen Haken hätte. Auf öffentliche Variablen innerhalb einer Objektfunktion kann nur mit öffentlichen Methoden direkt zugegriffen werden! Probiert mal den folgenden Code aus, das bekommt ihr tatsächlich ein undefined zurück,


function bla()
{
  this.blubb 'bla';
  function laber ()
  {
    alert (this.blubb);
  }
  laber();
}
var blubber = new bla();

während das hier tadellos funktioniert:


this.laber = function ()
{
  alert (this.blubb);
}
this.laber();

Es gibt zwar noch einen anderen Weg mit einer Referenz auf this, so wie ich es hier gezeigt habe, aber das ignoriere ich und sage euch auch sofort warum.

4. Und nun?

Ist wohl mal wieder Geschmackssache. Nur-JavaScript-Programmierer würden wohl sagen

Wen juckts. Läuft doch. Arbeite ich halt nur mit öffentlichen Methoden. [Quelle: Nur-JavaScript-Programmierer]

Aus ihrer Sicht haben sie sicherlich auch Recht, zumal viele Bibliotheken mittels des so genannten Literal-Objekts entwickelt werden. Da hat man eh keine Alternativen. Ein Beispiel dazu gibt es irgendwann mal bei einen weiteren Anfängertutorial.

Aber Entwickler, die von Hause aus mit anderen Sprachen zu tun haben, bekommen da ein wenig Bauchweh. Ich auch, darum arbeite ich so, wie unter Punkt 2 beschrieben. Deshalb werden die noch fehlenden Variablen auch so festgelegt.


function animateMenue (beginendtime)
{
  ...
  var hovered;
  var last_hovered;
  var last_fieldnum;
  var fieldnum;
  var start_point;
  ...
}

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt