⊗jsPmMCLb 505 of 505 menu

Biblioteke putem zatvaranja u JavaScript-u

Često se u JavaScript-u kreiraju biblioteke, koje predstavljaju skupove funkcija za korišćenje od strane drugih programera.

Takve biblioteke se obično umataju u module putem zatvaranja. Ovo se radi kako bi se, pri povezivanju biblioteke, u spoljnom svetu poyavljivalo što manje funkcija.

U pravilu svaka biblioteka nastoji da kreira u spoljnom svetu samo jednu promenljivu - objekat sa funkcijama biblioteke. Pritom unutar koda biblioteke deo funkcija su osnovne, a deo - pomoćne. Očigledno je, da u spoljni svet želimo da izvezemo samo potrebne funkcije, ne zatrpavajući izvezeni objekat pomoćnim funkcijama.

Hajde da pogledamo na primeru. Neka imamo sledeći skup funkcija koje bismo želeli da pretvorimo u biblioteku:

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; }

Hajde da našu biblioteku formiramo u vidu modula:

;(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; } })();

A sada da izvezemo sve funkcije, osim 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}; })();

Neka imamo HTML stranicu index.html:

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

Povežimo je sa našom bibliotekom:

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

Iskoristimo funkcije iz naše biblioteke:

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

Dat je sledeći kod:

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; }

Oformite ovaj kod u vidu modula. Izvezite spolja sve funkcije, osim pomoćne.

Proučite biblioteku underscore. Napravite sopstvenu sličnu biblioteku, ponovivši u njoj 5-10 funkcija originalne biblioteke.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij