JavaScriptda Yopilishlar orqali Kutubxonalar
JavaScript-da ko'pincha kutubxonalar yaratiladi, ular boshqa dasturchilar foydalashi uchun funksiyalar to'plamidan iborat bo'ladi.
Bunday kutubxonalar odatda yopilishlar orqali modullarga o'raladi. Buning sababi shundaki, kutubxona ulanganda tashqi dunyoda iloji boricha kamroq funksiyalar paydo bo'lsin.
Odatda har bir kutubxona tashqi dunyoda faqat bitta o'zgaruvchi yaratishga harakat qiladi - kutubxona funksiyalari bilan ob'ekt. Shu bilan birga kutubxona kodining ichida ba'zi funksiyalar asosiy, ba'zilari esa yordamchi bo'ladi. Shubhasiz, biz tashqi dunyoga faqat kerakli funksiyalarni eksport qilmoqchimiz, eksport qilinadigan ob'ektni yordamchi funksiyalar bilan to'ldirmaslik.
Keling, misol orqali ko'rib chiqaylik. Faraz qilaylik, bizda quyidagi funksiyalar to'plami mavjud bo'lib, ularni kutubxonaga aylantirmoqchimiz:
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(''));
}
// yordamchi funksiya
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
Keling, funksiyalarimizni modul shaklida rasmiylashtiramiz:
;(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(''));
}
// yordamchi funksiya
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
})();
Endi esa yordamchi funksiyadan tashqari barcha funksiyalarni eksport qilamiz:
;(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(''));
}
// yordamchi funksiya
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
window.math = {square, cube, avg, digitsSum};
})();
Faraz qilaylik, bizda index.html HTML sahifasi mavjud:
<html>
<head>
<script>
</script>
</head>
</html>
Keling, unga kutubxonamizni ulaymiz:
<html>
<head>
<script src="math.js"></script>
<script>
</script>
</head>
</html>
Keling, kutubxonamizdagi funksiyalardan foydalanamiz:
<html>
<head>
<script src="math.js"></script>
<script>
alert(math.avg([1, 2, 3]) + math.square());
</script>
</head>
</html>
Quyidagi kod berilgan:
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;
}
// yordamchi funksiya
function sum(arr, pow) {
let res = 0;
for (let elem of arr) {
res += elem ** pow;
}
return res;
}
Ushbu kodni modul shaklida rasmiylashtiring. Yordamchi funksiyadan tashqari barcha funksiyalarni tashqariga eksport qiling.
underscore kutubxonasini o'rganing.
O'zingizning shunga o'xshash kutubxonangizni yarating, unda
asl kutubxonaning 5-10 ta funksiyasini takrorlang.