⊗jsPmMCLb 505 of 505 menu

Biblioteker via lukking i JavaScript

Ofte i JavaScript opprettes biblioteker, som representerer sett med funksjoner for bruk av andre programmerere.

Slike biblioteker blir vanligvis innkapslet i moduler via lukking. Dette gjøres for at ved tilkobling av biblioteket til den ytre verden skal det oppstå så få funksjoner som mulig.

Som regel prøver hvert bibliotek å opprette bare én variabel i den ytre verden - et objekt med bibliotekets funksjoner. Samtidig er en del av funksjonene grunnleggende, og en del - hjelpefunksjoner. Det er åpenbart at vi bare vil eksportere nødvendige funksjoner til den ytre verden, uten å fylle eksportobjektet med hjelpefunksjoner.

La oss se på et eksempel. La oss si at vi har følgende sett med funksjoner som vi ønsker å gjøre om til et bibliotek:

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

La oss pakke funksjonene våre inn i en 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('')); } // hjelpefunksjon function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } })();

Og nå eksporterer vi alle funksjoner, unntatt hjelpefunksjonen:

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

La oss si at vi har en HTML-side index.html:

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

La oss koble biblioteket vårt til den:

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

La oss bruke funksjoner fra biblioteket vårt:

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

Følgende kode er gitt:

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

Pakke denne koden inn i en modul. Eksporter alle funksjoner ut, unntatt hjelpefunksjonen.

Studer biblioteket underscore. Lag ditt eget tilsvarende bibliotek, og gjenta 5-10 funksjoner fra det originale biblioteket.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis