Ето някои практически JavaScript обекти, които имат капсулиране

Discover Functional JavaScript бе обявен за една от най -добрите нови книги за функционално програмиране от BookAuthority !

Капсулирането означава скриване на информация. Става въпрос за скриване на възможно най-много вътрешни части на обекта и излагане на минимален публичен интерфейс.

Най-простият и елегантен начин за създаване на капсулиране в JavaScript е използването на затваряния. Затварянето може да бъде създадено като функция с частно състояние. Когато създаваме много затваряния, споделящи едно и също частно състояние, ние създаваме обект.

Ще изградя няколко обекта, които могат да бъдат полезни в дадено приложение: Stack, Queue, Event Emitter и Timer. Всички ще бъдат изградени с помощта на фабрични функции.

Да започваме.

Стек

Стекът е структура от данни с две основни операции: 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