78 votes

Comment utiliser le modèle de module Révéler en JavaScript

Je suis tombé sur cet article: le modèle de module révélateur de JavaScript . Je voudrais utiliser ceci dans mon projet.

Imaginons que j'ai une fonction abc et que j'appelle cette fonction dans mon fichier JavaScript principal.

Ce modèle rend-il les choses différentes? Quelqu'un peut-il me montrer un exemple de base de ce modèle?

99voto

KooiInc Points 38845

Un petit exemple:

var revealed = function(){
   var a = [1,2,3];
   function abc(){
     return (a[0]*a[1])+a[2];
   }

   return {
      name: 'revealed',
      abcfn: abc
   }
}();

dans la fonction anonyme qui est engagée pour donner des revealed d'une valeur, a et abc sont privées de cette fonction. Ce que la fonction renvoie un objet littéral avec un name de la propriété et un abcfn de la propriété, qui est une référence à l' abc function. L' abc function utilise la variable privée a. Cela peut être fait grâce à l'utilisation de fermetures (tout ce qui relève d'une fonction peut être référencé par tout le reste dans la même fonction).

Révélé utilisation:

alert(revealed.name);    //=> 'revealed'
alert(revealed.abcfn()); //=> 5 (1*2+3)

23voto

Robert Koritnik Points 45499

DC = Douglas Crockford
PGR = Révélant Motif de Module

Différence entre la DC et le PGR est principalement organisationnelle/lisible

Exemple est présenté dans l'article lui-même? Et quels sont exactement vous demander, car ces choses n'ont rien à faire avec les fichiers, mais plutôt à des fermetures.

Vous mettez tout dans un dispositif de fermeture (fonction) et de les exposer uniquement les pièces que vous souhaitez être accessible. La différence entre DC style et le PGR est que dans le premier fonctions sont définies dans des endroits différents, alors que dans le PGR ils sont toujours définies au même endroit et puis, ensuite, a révélé au public l'objet littéral.

Ainsi, dans le DC et PGR vous avez:

  • fermeture qui permet de définir les parties intimes (variables et fonctions)
  • partie privée
  • public résultat qui définit publiquement visible de la fonctionnalité et des variables (état)

Ces deux modèles ne diffèrent que dans la lisibilité. Dans CC cas, vous ne pouvez pas toujours savoir où certaines fonctionnalités seront définis, mais dans le PGR vous savez toujours tout est dans la partie privée.

13voto

yojimbo87 Points 27744

La présentation du modèle de module est très bien décrite dans l’article Essential JavaScript Design Patterns For Beginners .

6voto

RobG Points 41170

La méthode dite par l'auteur "de Douglas Crockford de modèle pour la création d'objets" est en fait le module de modèle qui a été développé par Richard Cornford et coll. Voir http://groups.google.com/group/comp.lang.javascript/msg/9f58bd11bd67d937

Comme pour les exemples, il en existe beaucoup. Lisez l'article suivant et suivez les liens: http://peter.michaux.ca/articles/module-pattern-provides-no-privacy-at-least-not-in-javascript-tm

0voto

Alex Wayne Points 58113

Pour le code à l'extérieur du module, il fait peu de différence. Dans les 3 cas dans cet article, les méthodes sont appelées de la même manière. Mais la structure du module lui-même est à l'intérieur différent.

Crockford module du modèle et de ce qu'ils appellent le "révélateur module pattern" sont à peu près la même chose, structurellement. La seule différence étant qu'ils attribuent la méthode à un local var en premier afin d'être plus lisible. Mais il n'y a vraiment rien de spécial à ce sujet, et vous avez quelques exemples dans votre lien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X