Китобхонаҳо тавассути кушоданиҳо дар 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};
})();
Фарз кунем, ки мо саҳифаи HTML index.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 функсияҳои китобхонаи
аслиро такрор кунед.