Voici quelques objets JavaScript pratiques qui ont une encapsulation

Discover Functional JavaScript a été nommé l'un des meilleurs nouveaux livres de programmation fonctionnelle par BookAuthority !

L'encapsulation signifie la dissimulation d'informations. Il s'agit de cacher autant que possible les parties internes de l'objet et d'exposer une interface publique minimale.

Le moyen le plus simple et le plus élégant de créer une encapsulation en JavaScript consiste à utiliser des fermetures. Une fermeture peut être créée en fonction de l'état privé. Lors de la création de nombreuses fermetures partageant le même état privé, nous créons un objet.

Je vais créer quelques objets qui peuvent être utiles dans une application: Stack, Queue, Event Emitter et Timer. Tout sera construit en utilisant les fonctions d'usine.

Commençons.

Empiler

Stack est une structure de données avec deux opérations principales: pushpour ajouter un élément à la collection et poppour supprimer l'élément le plus récent ajouté. Il ajoute et supprime des éléments selon le principe du dernier entré, premier sorti (LIFO).

Regardez l'exemple suivant:

let stack = Stack(); stack.push(1); stack.push(2); stack.push(3); stack.pop(); //3 stack.pop(); //2

Implémentons la pile en utilisant une fonction de fabrique.

function Stack(){ let list = []; function push(value){ list.push(value); } function pop(){ return list.pop(); } return Object.freeze({ push, pop }); }

L'objet stack a deux méthodes publiques push()et pop(). L'état interne ne peut être modifié que par ces méthodes.

stack.list; //undefined

Je ne peux pas modifier directement l'état interne:

stack.list = 0;//Cannot add property list, object is not extensible

Pour en savoir plus, consultez le livre Discover Functional JavaScript.

Pour en savoir plus sur l'application des techniques de programmation fonctionnelle dans React, jetez un œil à Functional React .

Apprenez React fonctionnel , de manière basée sur un projet, avec une architecture fonctionnelle avec React et Redux .

Suivre sur Twitter