Ось кілька практичних об’єктів JavaScript, які мають інкапсуляцію

Відкрийте функціональний JavaScript було визнано однією з найкращих нових книг про функціональне програмування від BookAuthority !

Інкапсуляція означає приховування інформації. Йдеться про те, щоб якомога більше приховати внутрішні частини об’єкта та виставити мінімальний загальнодоступний інтерфейс.

Найпростіший і найелегантніший спосіб створення інкапсуляції в JavaScript - це використання закриття. Закриття може бути створено як функція з приватним станом. Створюючи багато закриттів, що використовують один і той же приватний стан, ми створюємо об'єкт.

Я збираюся побудувати кілька об’єктів, які можуть бути корисними в програмі: стек, черга, випромінювач подій та таймер. Всі будуть побудовані з використанням заводських функцій.

Давайте розпочнемо.

Стек

Стек - це структура даних з двома основними операціями: pushдля додавання елемента до колекції та popдля видалення останнього доданого елемента. Він додає та видаляє елементи за принципом Last In First Out (LIFO).

Подивіться на наступний приклад:

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

Давайте реалізуємо стек за допомогою заводської функції.

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

Об'єкт стека має два загальнодоступні методи push()і pop(). Змінити внутрішній стан можна лише за допомогою цих методів.

stack.list; //undefined

Я не можу змінити безпосередньо внутрішній стан:

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

Ви можете знайти більше в книзі "Відкрийте функціональний JavaScript".

Докладніше про застосування методів функціонального програмування в React погляньте на Functional React .

Вивчіть функціональний React на основі проекту за допомогою функціональної архітектури з React та Redux .

Підпишіться на Twitter