JavaScriptда кутуфчалар орқали кутупхоналар
JavaScriptда кўпинча кутупхоналар яратилади, улар бошқа дастурчилар томонидан фойдаланилиш учун функциялар тўпламидир.
Бундай кутупхоналар одатда кутуфчалар орқали модулларга ўралган. Бу кутупхонани улашда ташқи дунёда имкон қадар кам функциялар пайдо бўлиши учун қилинади.
Одатда ҳар бир кутупхона ташқи дунёда фақат битта ўзгарувчини - кутупхона функциялари билан объектни яратишга ҳаракат қилади. Шу билан бирга, ичида кутупхона кодидаги функцияларнинг бир қисми асосий, бир қисми эса ёрдамчидир. Аниқки, биз ташқи дунёга фақат зарур функцияларни экспорт қилишни хоҳлаймиз, экспорт қилинадиган объектни ёрдамчи функциялар билан тўлдирмаймиз.
Келгила, мисолда кўрамиз. Бизда кутупхонага айлантирмоқчи бўлган қуйидаги функциялар тўплами мавжуд деб фараз қилайлик:
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(''));
}
// ёрдамчи функция
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
Келгила, функцияларимизни модул шаклида расмлаймиз:
;(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(''));
}
// ёрдамчи функция
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
})();
Энди эса ёрдамчи функциядан ташқари ҳамма функцияларни экспорт қилайлик:
;(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(''));
}
// ёрдамчи функция
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
window.math = {square, cube, avg, digitsSum};
})();
Бизда index.html HTML саҳифаси мавжуд деб фараз қилайлик:
<html>
<head>
<script>
</script>
</head>
</html>
Унга бизнинг кутупхонамизни улаймиз:
<html>
<head>
<script src="math.js"></script>
<script>
</script>
</head>
</html>
Бизнинг кутупхонамиздан функциялардан фойдаланайлик:
<html>
<head>
<script src="math.js"></script>
<script>
alert(math.avg([1, 2, 3]) + math.square());
</script>
</head>
</html>
Қуйидаги код берилган:
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;
}
// ёрдамчи функция
function sum(arr, pow) {
let res = 0;
for (let elem of arr) {
res += elem ** pow;
}
return res;
}
Ушбу кодни модул шаклида расмланг. Ёрдамчи функциядан ташқари ҳамма функцияларни ташқарига экспорт қилинг.
underscore кутупхонасини ўрганинг.
Узбига шуға ўхшаш кутупхона яратиб, унинг ичида
5-10 та оригинал кутупхона
функцияларини такрорланг.