molily: anonyme Funktion - öffentliche Methode aufrufen

Beitrag lesen

Hallo,

Jetzt stehe ich aber vor einer weiteren Herausforderung, ich dachte so geht's vielleicht, tut es aber nicht:

Wir bewegen uns gerade einen Schritt vor und zwei Schritte zurück.

Du scheinst dir noch unklar darüber, was du genau willst, denn du formulierst widersprechende Anforderungen. Das Revealing Module Pattern ermöglicht dir private Variablen und gibt ein Objekt zurück, an das du mehrere Methoden hängen kannst.

Entscheide einmal, ob du ein Modul (Objekt) willst oder nur eine Funktion. Du kannst nicht beides gleichzeitig haben. Eine Funktion kann nur einen Wert zurückgeben. (Die Möglichkeit, an eine Funktion weitere Funktionen zu hängen, weil sie auch nur ein Objekt ist, lasse ich einmal außen vor. Das ist keine gute Coding-Praxis.)

Wenn du ein Objekt mit Methoden hast, dann kannst du diese nicht direkt mit methode1 und methode2 ansprechen, sondern musst objekt.methode1 bzw. objekt.methode2 schreiben. Du kannst, wenn es dir sinnvoll erscheint, natürlich eine weitere Variable auf die Funktion zeigen lassen.

var objekt = (function() {  
  var methode = function() { alert(1); };  
  return {  
    methode: methode  
  };  
})();  
objekt.methode(); // 1  
var f = objekt.methode; // Shortcut anlegen  
f(); // 1

Das Anlegen dieser Shortcuts muss manuell passieren. Es ist nicht möglich und nicht sinnvoll, alle Methoden eines Objektes in den lokalen Scope zu importieren, sodass du direkt methode1(), methode() usw. ohne »objekt.« davor schreiben kannst.

Die unterschiedliche Aufrufweise wirkt sich übrigens auf die Bedeutung von this in der Funktion aus.

Vielleicht beschreibst du einmal, was du eigentlich vor hast, bevor wir uns hier weiter im Kreis drehen.

Mathias