⊗jsPmMCLb 505 of 505 menu

Kirjastot sulkeumien kautta JavaScriptissä

Usein JavaScriptissä luodaan kirjastoja, jotka edustavat funktioiden kokoelmia muiden ohjelmoijien käyttöön.

Tällaiset kirjastot yleensä kääritään moduuleihin sulkeumien kautta. Tämä tehdään siksi, että kirjaston liittämisen yhteydessä ulkoiseen maailmaan ilmestyisi mahdollisimman vähän funktioita.

Yleensä jokainen kirjasto pyrkii luomaan ulkoiseen maailmaan vain yhden muuttujan - olion, joka sisältää kirjaston funktiot. Samalla kirjaston koodin sisällä osa funktioista on pääasiallisia, ja osa - apufunktioita. On selvää, että haluamme viedä ulkoiseen maailmaan vain tarvittavat funktiot, eivätkä apufunktiot täytä vienti-oliota.

Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava funktioiden kokoelma, jonka haluaisimme muuttaa kirjastoksi:

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

Kootaan funktiomme moduuliksi:

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

Ja nyt viedään kaikki funktiot, paitsi apufunktio:

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

Oletetaan, että meillä on HTML-sivu index.html:

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

Liitetään siihen kirjastomme:

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

Käytetään kirjastomme funktioita:

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

Annettu seuraava koodi:

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

Järjestä tämä koodi moduuliksi. Vie ulos kaikki funktiot, paitsi apufunktio.

Tutki underscore-kirjastoa. Tee oma vastaava kirjastosi, toistaen siihen 5-10 alkuperäisen kirjaston funktioita.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää