⊗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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць