Announcement

Collapse
No announcement yet.

Frage zu JavaScript-Funktion / Objekt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zu JavaScript-Funktion / Objekt

    Hallo!

    Es geht um folgenden Codeschnipsel:

    Code:
    var pppp = function () {
    	return {
    			aga : "Hallo",
    			usu : function () { alert("gugugu"); }
    		};
    }();
    
    console.log(pppp.usu());
    
    console.log(pppp.aga);
    1. Wieso kommt der alert gleich nach Laden der Seite? Die Funktion wird zwar gleich ausgeführt, aber ich speichere das Ganze doch einer Referenz pppp? Wieso wird sie dann trotzdem gleich ausgeführt?
    2. Wieso ergibt der erste console.log "undefined"? Die Eigenschaft "aga" gibt die Konsole doch auch ganz normal aus?

    Ich hatte das so verstanden, dass pppp jetzt quasi ein Objekt ist, mit aga als Feld und usu als Methode. Aber da scheine ich mich wohl zu täuschen...

    Wäre nett, wenn mir da jemand ein bisschen helfen könnte!!
    Zuletzt editiert von Vokabulator; 31.05.2014, 23:53.

  • #2
    1. new Function()...
    2. alert hat keinen Rückgabewert (Der Rückgabewert der Methode alert() ist stets undefined.)
    Christian

    Comment


    • #3
      @Christian: Also ich denke nicht dass man hier unbedingt einen Konstruktor braucht. Eine Factory ist vollkommen ausreichend so wie es Vokabulator geschrieben hat.

      Ich erkläre Dir jetzt mal was genau alles abläuft:

      Dieser Teil deklariert erstmal eine anonyme Funktion die ein Objekt zurückgibt:

      Code:
      function () {
      	return {
      			aga : "Hallo",
      			usu : function () { alert("gugugu"); }
      		};
      }
      Diesen führst Du danach direkt mit () aus. Das heisst in pppp steht jetzt das Objekt welches Du in der Funktion zurückgibst. Die Funktion kann auch nicht wieder aufgerufen werden, weil sie ja anonym ist. Gibst Du der Funktion keinen Namen, könntest Du sie Dir an dieser Stelle auch sparen

      Danach rufst Du auf dem Objekt pppp die Funktion usu auf. Diese erzeugt folgerichtig das alert. Da die Funktion keinen Rückgabewert hat wird auf der Kommandozeile undefined geschrieben.

      Danach gibst Du noch den Wert des Feldes aga von pppp auf der Kommandozeile aus, welcher natürlich "Hallo" ist

      Comment

      Working...
      X