⊗jsPmMCLb 505 of 505 menu

Библиотеки преку замыкања во JavaScript

Често во JavaScript се создаваат библиотеки, кои претставуваат збирки на функции за користење од страна на други програмери.

Ваквите библиотеки обично се пакуваат во модули преку замыкања. Ова се прави за да се обезбеди, при поврзување на библиотеката, во надворешниот свет да се појавуваат што е можно помалку функции.

Во принцип, секоја библиотека се обидува да создаде во надворешниот свет само една променлива - објект со функциите на библиотеката. Притоа, во кодот на библиотеката, дел од функциите се основни, а дел - помошни. Очигледно, во надворешниот свет сакаме да ги експортираме само потребните функции, без да го затрупуваме експортираниот објект со помошни функции.

Да го погледнеме следниов пример. Нека имаме следниов збир на функции кои би сакале да ги претвориме во библиотека:

function square(num) { return num ** 2; } function cube(num) { return num ** 3; } function avg(arr) { return sum(arr, 1) / arr.length; } function digitsSum(num) { return sum(String(num).split('')); } // помошна функција function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; }

Ајде да ги организираме нашите функции во форма на модул:

;(function() { function square(num) { return num ** 2; } function cube(num) { return num ** 3; } function avg(arr) { return sum(arr, 1) / arr.length; } function digitsSum(num) { return sum(String(num).split('')); } // помошна функција function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } })();

А сега да ги експортираме сите функции, освен помошната:

;(function() { function square(num) { return num ** 2; } function cube(num) { return num ** 3; } function avg(arr) { return sum(arr, 1) / arr.length; } function digitsSum(num) { return sum(String(num).split('')); } // помошна функција function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } window.math = {square, cube, avg, digitsSum}; })();

Нека имаме HTML страница index.html:

<html> <head> <script> </script> </head> </html>

Да ја поврземе нашата библиотека со неа:

<html> <head> <script src="math.js"></script> <script> </script> </head> </html>

Да ги искористиме функциите од нашата библиотека:

<html> <head> <script src="math.js"></script> <script> alert(math.avg([1, 2, 3]) + math.square()); </script> </head> </html>

Даден е следниов код:

function avg1(arr) { return sum(arr, 1) / arr.length; } function avg2(arr) { return sum(arr, 2) / arr.length; } function avg3(arr) { return sum(arr, 3) / arr.length; } // помошна функција function sum(arr, pow) { let res = 0; for (let elem of arr) { res += elem ** pow; } return res; }

Организирајте го овој код во форма на модул. Експортирајте ги нанадвор сите функции, освен помошната.

Проучете ја библиотеката underscore. Направете ваша слична библиотека, повторувајќи во неа 5-10 функции од оригиналната библиотека.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј