⊗jsPmMCLb 505 of 505 menu

Biblioteker via lukninger i JavaScript

Ofte i JavaScript oprettes der biblioteker, som repræsenterer samlinger af funktioner til brug for andre programmører.

Sådanne biblioteker indpakkes normalt i moduler via lukninger. Dette gøres for at der ved tilslutning af biblioteket til den omkringliggende verden opstår så få funktioner som muligt.

Som regel stræber hvert bibliotek efter at oprette kun én variabel i den omkringliggende verden - et objekt med bibliotekets funktioner. Samtidig er en del af funktionerne i bibliotekets kode hovedfunktioner, og en del er hjælpefunktioner. Det er indlysende, at vi kun ønsker at eksportere de nødvendige funktioner til den omkringliggende verden, uden at opfylde det eksporterede objekt med hjælpefunktioner.

Lad os se på et eksempel. Antag at vi har følgende samling af funktioner, som vi ønsker at lave 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('')); } // hjælpefunktion function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; }

Lad os organisere vores funktioner som et 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ælpefunktion function sum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } })();

Og nu eksporterer vi alle funktioner, bortset fra hjælpefunktionen:

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

Antag at vi har en HTML-side index.html:

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

Lad os tilslutte vores bibliotek til den:

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

Lad os bruge funktioner fra vores bibliotek:

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

Følgende kode er givet:

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

Organiser denne kode som et modul. Eksporter alle funktioner udadtil, bortset fra hjælpefunktionen.

Studer biblioteket underscore. Lav dit eget tilsvarende bibliotek, hvor du gentager 5-10 funktioner fra det originale bibliotek.

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