⊗jsPmMCLb 505 of 505 menu

Bibliotek via closure i JavaScript

Ofta i JavaScript skapas bibliotek, som är samlingar av funktioner för användning av andra programmerare.

Sådana bibliotek är vanligtvis inlindade i moduler via closure. Detta görs så att när biblioteket ansluts till den externa världen så få funktioner som möjligt exponeras.

Vanligtvis strävar varje bibliotek efter att skapa endast en variabel i den externa världen - ett objekt med bibliotekets funktioner. Samtidigt, inuti bibliotekets kod är en del funktioner huvudfunktioner, och en del är hjälpfunktioner. Uppenbarligen, vill vi bara exportera de nödvändiga funktionerna till den externa världen, utan att förorena det exporterade objektet med hjälpfunktioner.

Låt oss titta på ett exempel. Låt oss säga att vi har följande uppsättning funktioner som vi skulle vilja göra till ett 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('')); } // hjälpfunktion function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; }

Låt oss paketera våra funktioner som 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('')); } // hjälpfunktion function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } })();

Och nu exporterar vi alla funktioner, förutom hjälpfunktionen:

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

Låt oss säga att vi har en HTML-sida index.html:

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

Låt oss ansluta vårt bibliotek till den:

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

Låt oss använda funktioner från vårt bibliotek:

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

Följande kod ges:

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

Paketera denna kod som en modul. Exportera alla funktioner utåt, förutom hjälpfunktionen.

Studera biblioteket underscore. Skapa ditt egna liknande bibliotek, och återskapa 5-10 funktioner från originalet bibliotek.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa