Struppi: Objektorientierung und Methoden

Beitrag lesen

Ich habe mir in JS ein kleines Objekt geschrieben mit dem Namen Controller.

"function Controller(){}"

Das ist noch kein Objekt, sondern eine Konstruktorfunktion.

Soviel zur Deklaration. Nun füge ich über das Schlagwort "prototype" einige Methoden und Attribute hinzu.

Controller.prototype.setConfig = function () {
        this.sendRequest();
        this.setStandartFunctions();

sorry für den Hinweis, aber das tut weh [link:http://www.k-faktor.com/standart/]

Aber das Javascript ist bisher i.O.

Innerhalb einer dieser Methoden möchte ich nun eine andere Methode des Objekts aufrufen.

Nicht ganz, du willst innerhalb von Eventfunktionen auf das Objekt zugreifen.

[code lang=javascript]
    Controller.prototype.setStandartFunctions = function () {
        $('.buttonNewData').bind('click',function() {
            Controller.prototype.startLayerControl('create');
        });

[...]

An dieser Methode kann man nun schon mein "Problem" erkennen. Ich rufe andere Methoden desselben Objekts immer mit "Controller.prototype.[Methode]" auf. In den meisten Fällen funktioniert das, allerdings nicht bei allen.

Das ist auch falsch, du willst hier vermutlich auf die Instanz deines Objektes zugreifen, damit diese in der Eventfunktion zu verfügung steht, musst du diese lokal kopieren.

Grob sieht das so aus:
[code lang=javascript]Controller.prototype.setStandartFunctions = function () {
var _this = this; // Kopie
 $('.buttonNewData').bind('click',function() {
             _this.startLayerControl('create');
         });
[...]

Bei den anderen Aufrufen, kannst du das \_this ebenfalls verwenden.  
  
Struppi.