Maison > interface Web > js tutoriel > le corps du texte

Une discussion détaillée des fermetures et des applications JavaScript

高洛峰
Libérer: 2017-01-20 11:16:36
original
1131 Les gens l'ont consulté

J'ai vraiment appris les fermetures encore et encore. JS est profond et profond, et j'ai l'impression d'avoir gagné quelque chose de nouveau à chaque fois que je l'apprends. Je crois que la fermeture est essentielle lorsque tout le monde encapsule des plug-ins front-end. Personnellement, je pense que le véritable avantage des fermetures n'est pas seulement l'encapsulation, mais aussi l'encapsulation. Elle peut apporter nos propres méthodes privées et est flexible et pratique dans l'appel. Elle gardera également les objets externes de votre code propres et bien rangés.

Allons droit au but

Wikipédia définit la fermeture JS comme ceci : En informatique, la fermeture (anglais : Closure), également connue sous le nom de fermeture lexicale (Lexical Closure) ou fermeture de fonction (function Closures) sont des fonctions qui font référence à des variables libres. La variable libre référencée restera avec la fonction même après avoir quitté l'environnement dans lequel elle a été créée. Il existe donc une autre façon de dire qu’une fermeture est une entité composée d’une fonction et de son environnement de référence associé. Les fermetures peuvent avoir plusieurs instances au moment de l'exécution, et différents environnements de référence et la même combinaison de fonctions peuvent produire différentes instances.

En termes simples, une fermeture est différente d'une fonction générale. Elle permet à une fonction d'accéder toujours à des variables non locales en dehors de la portée de l'appel immédiat. Je voudrais également dire que la syntaxe des fermetures rend votre code plus dynamique. Le morceau de code suivant peut vous faire ressentir quelque chose.

<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>
Copier après la connexion


J'attache appObj à la fenêtre. J'aime généralement définir un objet global nommé application, qui représente l'ensemble de l'application. objet de niveau supérieur, vous pouvez exposer de nombreuses méthodes d'opération publiques au monde extérieur, et vous pouvez également y effectuer des traitements privés pour empêcher les appels externes de causer des problèmes. Sous l'objet d'application "de niveau supérieur" défini, vous pouvez également définir les variables globales que vous devez contenir, afin d'éviter l'impact des variables globales ordinaires sur l'application, et dans la fermeture que vous avez définie, via des objets exposés au à l'extérieur, j'ai toujours pensé qu'il était trop honteux de définir une variable globale JS avec désinvolture.

Avec la méthode d'écriture de clôture et les puissantes invites intelligentes de VS, vous vous sentirez extrêmement à l'aise. Ci-dessous, j'ai joint une autre méthode

(function () {
  var baseUrl = "www.cnblogs.com/tdws/";
 
  application.getBaseUrl = function () {
  return baseUrl;
  }
 }());
 console.log(application.getBaseUrl());//www.cnblogs.com/tdws/
Copier après la connexion

Une discussion détaillée des fermetures et des applications JavaScript

Écrivez-la à la fin

Ne pas vous pensez que les variables sont conservées et qu'une série de méthodes get sont exposées. N'est-ce pas très dynamique ? ╮(╯-╰)╭ Écartez les mains...

Bien sûr, les fermetures doivent également être utilisées. de manière appropriée par vous, afin de ne pas provoquer de références circulaires, car cela entraînerait une fuite de mémoire. Ne faites pas de fermetures inutiles, qui gaspilleraient votre espace, car la fermeture ne se desserrera pas. N'utilisez pas de fermetures partout car cela augmenterait la complexité de votre code.

Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra apporter de l'aide à l'étude ou au travail de chacun. J'espère également soutenir le site Web PHP chinois !

Pour des articles plus détaillés sur les fermetures et les applications JavaScript, veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!