Carsten: Eigene Objekte + Methoden

Hallo zusammen,

ich habe da ein kleines Verständnisproblem.

Ich deklariere eine Klasse/Objekt, das Objekt hat Eigenschaften, aber wie lege ich methoden an?

Werden die Methoden als normale Funktionen in die JS Datei (oder HTML Header) geschrieben, oder wie funzt das? Wo gebe ich den Bezug zum Objekt an? Oder denke ich falsch?

Ich habe bis jetzt leider nur ein Klasse für VBasic geschrieben und dieses Wissen ist nur schwer auf JavaScript zu übertragen. Die Sprachen unterscheiden sich von der Syntax her zu stark.

Vieleicht hat ja jemand die Zeit mir ein Beispiel zu geben. JavaScript programmieren kann ich eigendlich ganz gut, es braucht also nicht für Anfänger zu sein.

Vielen Dank...

Carsten

  1. Hio,

    Werden die Methoden als normale Funktionen in die JS Datei (oder HTML Header) geschrieben, oder wie funzt das? Wo gebe ich den Bezug zum Objekt an? Oder denke ich falsch?

    ja, werden sie. In deine Klasse definierts du dann eine Referenz auf diese Funktion. In Javascript werden komplexe Strukturen (Arrays,Objekte) immer als Referenz wiedergegeben.

    z.b.

    meinAlert = alert;
    meinAlert("hallo");

    meinAlert ist nun eine Referenz auf die funktion window.alert.
    genauso verhält es sich mit einer selbstdefinierten Klasse.

    function meineKlasse() {
      this.funktion = meineFunktion; // <-- die () werden weggelassen, ansonsten würde in dieser Stelle ein Aufruf der Funktion stattfinden
       }

    function meineFunktion() {
      alert("hallo");
      }

    meinObj = new meineKlasse();
    meinObj.funktion();

    möglich wäre auch eine Funktion in einer Klassendefinition dynamisch zu erzeugen,

    function meineKlasse() {
      this.funktion = new Function("","alert('hallo');");
       }

    dann wäre diese Funktion nur über eine Instanz der Klasse selbst ausführbar und würde nicht über das window-Objekt zur Verfügung stehen. Eine dynamisch erzeugte Funktion ist in der Regel aber langsamer und sollte wenn möglich keine Performacelastigen Dinge tun.

    Ich habe bis jetzt leider nur ein Klasse für VBasic geschrieben und dieses Wissen ist nur schwer auf JavaScript zu übertragen. Die Sprachen unterscheiden sich von der Syntax her zu stark.

    ja und nein, die Konzepte von OOP gelten primär erstmal für jede OOP-Sprache, wobei Javascipt genaugenommen eher objektbasiert als objektorientiert ist. Letztendlich hängt es immer davon ab, welche OOP-Konzepte und wie diese Konzepte in einer Programmiersprache umgesetzt wurden.

    Vieleicht hat ja jemand die Zeit mir ein Beispiel zu geben. JavaScript programmieren kann ich eigendlich ganz gut, es braucht also nicht für Anfänger zu sein.

    jup, s.o.

    gl & hf

    Thorsten

    1. Cool, danke...

    2. Hallo Thorsten,

      Ich habe bis jetzt leider nur ein Klasse
      für VBasic geschrieben und dieses Wissen
      ist nur schwer auf JavaScript zu
      übertragen. Die Sprachen unterscheiden sich
      von der Syntax her zu stark.

      Nicht nur von der Syntax, auch vom Ansatz. JS ist
      prototypenbasiert.

      ja und nein, die Konzepte von OOP gelten
      primär erstmal für jede OOP-Sprache,

      s/OOP-//

      wobei Javascipt genaugenommen eher
      objektbasiert als objektorientiert ist.

      Naja, nicht wirklich :) Es ist prototypenbasiert.

      Gruesse,
       CK