Question

Je voudrais savoir si le modèle de module ou modèle constructeur / PROTOTYPE est plus applicable à mon travail.

En fait j'utilise javascript discret -. Le document HTML a une référence au fichier .js

Ma compréhension du motif du module:

  • appeler une méthode INIT (qui est essentiellement une méthode publique i peut créer et revenir en utilisant le motif de module)
  • Dans la méthode INIT, assigner tous les événements de clic etc.

Cela sonne comme le modèle parfait pour ma situation, car je ne ai pas besoin de créer

Objets et héritage hiérarchies etc.

Ma compréhension du motif Constructor / Prototype:

  • pour créer des objets
  • pour utiliser l'héritage (à savoir les sous-types d'un supertype)

Ai-je raison, que pour fournir le javascript discret, le modèle de module est idéal?

Était-ce utile?

La solution

Constructor-fonctions et prototypes sont l'un des moyens raisonnables pour mettre en œuvre des classes et des instances. Ils ne correspondent pas tout à fait à ce modèle si vous avez besoin généralement de choisir une méthode de régime ou d'aide particulière à mettre en œuvre des classes en termes de prototypes. ( des renseignements généraux sur les classes de JS .)

Le motif de module est généralement utilisé pour espaces de noms, où vous aurez une seule instance agissant en tant que magasin aux fonctions liées au groupe et des objets. Ceci est un cas d'utilisation différente de ce qui est bon pour le prototypage. Ils sont en concurrence pas vraiment les uns avec les autres; vous pouvez utiliser tout à fait heureusement les deux ensemble (par exemple, mettre un constructeur-fonction à l'intérieur d'un module et dire new MyNamespace.MyModule.MyClass(arguments)).

Autres conseils

modèle du module est de loin plus facile et plus élégant que prototype. Cependant, la pensée premier mobile. Il est pas un modèle pertinent pour les objets de moyenne / grande, car l'initialisation doit analyser tout le bloc avant de commencer. Les multiples fermetures créent également des dépendances circulaires que le garbage collector ne libère pas (en particulier IE), il en résulte une empreinte mémoire plus lourd pas libéré jusqu'à ce que la fenêtre (ou onglet) est fermé - vérification gestionnaire de tâches de chrome à compare- Le temps de chargement est inversement proportionnelle à la taille de l'objet en utilisant motif de module alors que ce ne sont pas le cas pour l'héritage prototypal. Les déclarations ci-dessus sont vérifiées par plusieurs points de repère comme celui-ci: http://jsperf.com/prototypal-performance/54

Comme on le voit dans le dernier test. Les petits objets sont mieux en cours d'initialisation comme objet ordinaire (sans ces motifs). Il convient pour les objets simples ne nécessitant pas de fermeture ni d'héritage. Il est sage d'évaluer si vous avez besoin même ces motifs.

modèle prototype nous permet d'étendre les fonctionnalités et il n'y a qu'une seule instance de fonctions dans une mémoire quel que soit le nombre d'objets. Dans le module boniment, chaque objet crée une nouvelle instance de fonctions en mémoire, mais il fournit avec le concept de variables privées / publiques et aide à encapsuler les variables et les fonctions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top