2015-05-25 9 views
5

Ich erbte eine Anwendung, und ich sehe diese JavaScript-Struktur überall. Was ist der Grund dafür? Ich bekomme, dass es eine anonyme Funktion ist und dass PaymentOffersOverview an es übergeben wird.Wie funktioniert das JavaScript selbst ausführende Funktion/Struktur

Aber was ich nicht bekomme, ist die letzte Zeile. })(PaymentOffersOverview); Warum kommt es wieder rein?

// Then the code can be used as follow 

alert(PaymentOffersOverview.App.Settings.Id); 

Fiddle

+1

Die letzte Zeile ist der Wert des ersten Parameters, den Ihre anonyme Funktion akzeptiert. – Blauharley

+1

Ich denke, Sie müssen auf IIFE nachlesen http://benalman.com/news/2010/11/immediately-invoked-function-expression/ –

+0

@DavidJones - Danke werde ich, ich denke, das Problem war, dass ich nicht sicher war was für – R4nc1d

Antwort

0

Es ist in nicht wieder übergeben bekommen. In der letzten Zeile erhält die Schließung die PaymentOffersOverview, da sie selbstaufrufend ist. Wenn es nicht bestanden wurde, wäre die PaymentOffersOverview innerhalb des Verschlusses undefined.

// definition of local variable 
var PaymentOffersOverview = PaymentOffersOverview || {}; 

(function(param) { 
    // now we are in the context of the closure where param refers to 
    // PaymentOffersOverview, yet PaymentOffersOverview is not defined 
    // within this scope. It is param. 
    // You can use any name here, using the same is just for convinience. 
    var App = {}; 

    App.Settings = { 
     Id: some Id value 
     // Some Code 
    }; 

    App.ShowLoader = function (message) { 
      // Some Code 
     }; 

    param.App = App; 
})(PaymentOffersOverview); // passing of the variable 
+0

Danke, es macht jetzt wirklich völlig Sinn. Das Seltsame für mich war, dass PaymentOffersOverview in die Funktion mit dem gleichen Namen wie das oben deklarierte Objekt übergeben wurde. Also macht die Variable param mehr Sinn. – R4nc1d

Verwandte Themen