⊗jsPmMCLb 505 of 505 menu

Knjižnice s pomočjo zaprtij v JavaScript

Pogosto so v JavaScript ustvarjene knjižnice, ki predstavljajo nize funkcij za uporabo s strani drugih programerjev.

Takšne knjižnice so običajno zavite v module s pomočjo zaprtij. To se naredi zato, da se ob priklopu knjižnice v zunanjem svetu pojavi čim manj funkcij.

Pravilo je, da vsaka knjižnica skuša ustvariti v zunanjem svetu samo eno spremenljivko - objekt s funkcijami knjižnice. Pri tem so znotraj kode knjižnice nekatere funkcije osnovne, nekatere pa so pomožne. Očitno želimo v zunanji svet izvoziti samo potrebne funkcije, ne da bi zasmradili izvožen objekt s pomožnimi funkcijami.

Poglejmo si na primeru. Recimo, da imamo naslednji niz funkcij, ki jih želimo spremeniti v knjižnico:

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('')); } // pomožna funkcija function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; }

Oblikujmo naše funkcije v modul:

;(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('')); } // pomožna funkcija function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } })();

In sedaj izvozimo vse funkcije, razen pomožne:

;(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('')); } // pomožna funkcija function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } window.math = {square, cube, avg, digitsSum}; })();

Recimo, da imamo HTML stran index.html:

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

Pripnimo nanjo našo knjižnico:

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

Uporabimo funkcije iz naše knjižnice:

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

Podana je naslednja koda:

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; } // pomožna funkcija function sum(arr, pow) { let res = 0; for (let elem of arr) { res += elem ** pow; } return res; }

Oblikujte to kodo v modul. Izvozite ven vse funkcije, razen pomožne.

Preučite knjižnico underscore. Ustvarite svojo podobno knjižnico, tako da ponovite v njej 5-10 funkcij originalne knjižnice.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni