Bernhard Peissl: Objekte und Events

Beitrag lesen

Hallo Michael!

das kann auf keinen Fall so sein, denn mit den () nach
dem Funktionsnamen wäre die Funktion this.feld_mm()
der Rückgabewert der Funktion feld_mm. Ausserdem wäre
das ein(e) falsche(r) Syntax.

Stimmt, die Klammern gehören weg, aber Funktionen sind in Javascript genauso Objekte. Daher kann man auch funktionen auf funktionen "zuweisen" ! -gibt's echt, ehrlich! Nur gehören die Klammern weg, da jedoch deine Funktion dann genauso heissen würde wie deine Variable müsstest du dir einen anderen Namen für eine(n) der beiden einfallen lassen.

Vgl:
var fenster  = new Window();
var feld     = new Array();
var funktion = new Function();

... im Grunde das selbe Schema !

Ich hab dir einen Auszug aus einem Skriptum von einer meiner Übungen auf der Uni zum Thema Javascript:

Ja, wir lernen sowas wirklich auf der Uni ;-)
Aber frag nicht wie ... ! - SELFHTML-Forum is the place to be!!

<html>
<head>
<script language="JavaScript">

function zeige_umfang (r) { // Deklaration einer Objektmethode (=Funktion)
  var umfang, pi=3.14;
  alert("Kreis "+this.name + " mit Umfang " + (pi*2*r));
        // this.name greift auf Komponente name der  
        // aktuellen Instanz von Objekt kreis zu.
}

function position (x,y) { // Deklaration von Objekt position
  this.posx = x;          // mit 2 Komponenten posx und posy
  this.posy = y;          // this zeigt auf aktuelle Objektinstanz.
}

function kreis (name,radius,pos) {   // Deklaration von Objekt kreis
  this.name = name;
  this.radius = radius;
  this.pos = pos;                    // Objekt als Objektkomponente
  this.zeige_umfang = zeige_umfang;  // Methodenzuweisung !!!!!!!
}

</script>
</head>
<body>
<script language="JavaScript">  
pos1 = new position(0.0,0.0);
kreis1 = new kreis("Kreis1",1.23,pos1);
kreis1.zeige_umfang (kreis1.radius);
</script>
</body>
</html>

Du musst es mir ja nicht glauben, aber über JavaScript hab ich mich schon längst aufgehört zu wundern ;-)

Dieses Beispiel kannst du Strg-Kopieren und austesten. Es funktioniert einwandfrei :-)

Grüsse
Bernhard