Middle+
Чаро дар ҳалли runOnce метавонад ба методи apply ниёз дошта бошад?
sobes.tech AI
Ҷавоб аз AI
Методи apply дар JavaScript имкон медиҳад, ки функсия бо контекст (this) муайян ва аргументҳо дар шакли массив даъват карда шавад. Дар иҷрои runOnce, ки бояд танҳо як маротиба иҷро шавад, apply барои гузаронидани аргументҳои аслӣ ва контексти даъват ба функсияи пӯшида кӯмак мекунад.
Масалан, агар мо хоҳем, ки runOnce функсияеро баргардонад, ки дар аввал бо ҳамин аргументҳо ва контекст функсияи аслӣро даъват мекунад ва дар даъватҳои баъдӣ — не, пас apply имкон медиҳад, ки инро ба таври умуми анҷом диҳем:
function runOnce(fn) {
let called = false;
let result;
return function(...args) {
if (!called) {
called = true;
result = fn.apply(this, args); // гузаронидани контекст ва аргументҳо
}
return result;
};
}
Инчунин, apply кори функсияро бо ҳар миқдори аргументҳо ва контексти дуруст таъмин мекунад.