Heim > Artikel > Web-Frontend > Eine ausführliche Diskussion über JavaScript-Abschlüsse und -Anwendungen
Ich habe wirklich immer wieder gelernt, dass JS tiefgreifend und tiefgreifend ist, und ich habe jedes Mal das Gefühl, etwas Neues gewonnen zu haben. Ich glaube, dass Schließung unerlässlich ist, wenn jeder Front-End-Plug-Ins kapselt. Ich persönlich denke, dass der wahre Vorteil von Abschlüssen nicht nur in der Kapselung liegt, sondern auch darin, dass sie unsere eigenen privaten Methoden mitbringen kann und dass sie flexibel und bequem aufgerufen werden kann. Außerdem werden die externen Objekte Ihres Codes sauber und ordentlich gehalten.
Kommen Sie auf den Punkt
Wikipedia definiert JS-Closure wie folgt: In der Informatik wird Closing (engl.: Closure) auch als lexikalischer Abschluss (Lexical Closure) oder Funktionsabschluss (Funktionsschließungen) bezeichnet. sind Funktionen, die auf freie Variablen verweisen. Die referenzierte freie Variable verbleibt bei der Funktion, auch nachdem sie die Umgebung, in der sie erstellt wurde, verlassen hat. Daher kann man auch anders sagen, dass ein Abschluss eine Entität ist, die aus einer Funktion und der zugehörigen Referenzumgebung besteht. Abschlüsse können zur Laufzeit mehrere Instanzen haben, und unterschiedliche Referenzumgebungen und dieselbe Funktionskombination können unterschiedliche Instanzen erzeugen.
Laienhaft ausgedrückt unterscheidet sich ein Abschluss von einer allgemeinen Funktion. Er ermöglicht einer Funktion weiterhin den Zugriff auf nicht-lokale Variablen außerhalb des Bereichs des unmittelbaren Aufrufs. Ich möchte auch sagen, dass die Syntax von Abschlüssen Ihren Code dynamischer macht. Der folgende Codeabschnitt kann bei Ihnen etwas hervorrufen.
<script> (function () { var userToken = "this is my token"; var someConfig = "opening some function"; var privateValue = "private"; var publicValue = "public"; var appObj = {}; function myPrivateFunc() { alert(privateValue) } appObj.getUserToken = function () { //some logic userToken += " after some inner logic"; return userToken; } appObj.publicVal = publicValue; window.application = appObj; }());//立即执行 console.log(application.getUserToken());//this is my token after some inner logic console.log(application.publicVal);//public console.log(application.privateValue); //undefined application.myPrivateFunc(); //error </script>
Ich füge normalerweise ein globales Objekt mit dem Namen application hinzu, das die gesamte Anwendung darstellt Als Objekt der obersten Ebene können Sie viele öffentliche Betriebsmethoden der Außenwelt zugänglich machen und darin auch einige private Verarbeitungen durchführen, um zu verhindern, dass externe Aufrufe Probleme verursachen. Unter dem definierten Anwendungsobjekt der „obersten Ebene“ können Sie auch die globalen Variablen definieren, die darin enthalten sein müssen, um die Auswirkungen gewöhnlicher globaler Variablen auf die Anwendung zu verhindern, und innerhalb des von Ihnen definierten Abschlusses Objekte übergeben, die dem bereitgestellt werden Außerhalb drücken Sie klarere Informationen aus. Ich habe immer gedacht, dass es zu beschämend ist, eine JS-Globalvariable beiläufig zu definieren.
Mit der Abschlussschreibmethode und den leistungsstarken intelligenten Eingabeaufforderungen von VS werden Sie sich äußerst wohl fühlen. Unten habe ich eine weitere Methode angehängt
(function () { var baseUrl = "www.cnblogs.com/tdws/"; application.getBaseUrl = function () { return baseUrl; } }()); console.log(application.getBaseUrl());//www.cnblogs.com/tdws/
Schreiben Sie es am Ende
Nicht Sie denken, dass die Variablen beibehalten werden und eine Reihe von Get-Methoden verfügbar gemacht werden. Ist das nicht sehr dynamisch?
Natürlich müssen auch Abschlüsse verwendet werden ordnungsgemäß von Ihnen und verursachen Sie keine Zirkelverweise, da dies zu einem Speicherverlust führt. Nehmen Sie keine unnötigen Verschlüsse vor, die Ihren Platz verschwenden, da der Verschluss nicht freigegeben wird. Verwenden Sie nicht überall Abschlüsse, da dies die Komplexität Ihres Codes erhöht.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels jedem beim Lernen oder Arbeiten helfen kann. Ich hoffe auch, die PHP-Chinese-Website zu unterstützen.
Ausführlichere Artikel zu JavaScript-Abschlüssen und -Anwendungen finden Sie auf der chinesischen PHP-Website!