Junior
Чӣ тавр методи apply дар JavaScript кор мекунад?
sobes.tech AI
Ҷавоб аз AI
Рамзи apply дар функсияҳо истифода мешавад ва имкон медиҳад, ки ин функсия бо арзиши муайяншудаи this ва аргументҳо, ки дар шакли массив (ё объекти монанд ба массив) дода шудаанд, фаро хонда шаванд.
Аспектҳои асосӣ:
- Танзим кардани
this: Аргументи аввалини методиapplyарзиши калимаи калидииthis-ро дар дохили функсияи даъватшуда муайян мекунад. Агарnullёundefinedдода шавад, дар режими ғайри қатъӣ,thisба объекти глобалӣ (масалан,windowдар браузер ёglobalдар Node.js) ишора мекунад, ва дар режими қатъӣ, он боқӣ мемонадundefined. - Пас додани аргументҳо: Аргументи дуюм массив (ё объекти монанд ба массив) мебошад, ки унсурҳои он аргументҳои функсияи даъватшуда хоҳанд буд, дар тартиби онҳо дар массив.
Синтаксис:
function.apply(thisArg, argsArray)
thisArg: Арзиши, ки ҳамчунthisистифода мешавад дар вақти даъват.argsArray: Массив ё объекти монанд ба массив, ки аргументҳоро дар бар мегирад.
Фарқиятҳо бо call:
applyаргументҳоро ҳамчун массив қабул мекунад.callаргументҳоро ҳамчун арзишҳои алоҳида, пас азthisArgнавишта мешавад.
Маслиҳат барои истифода:
// Функсия барои ҳисоб кардани рақами максималӣ дар массив
const numbers = [1, 5, 2, 8, 3];
const max = Math.max.apply(null, numbers);
console.log(max); // 8
// Даъвати методи объект бо контексти дигар `this`
const person1 = { name: 'Alice' };
const person2 = { name: 'Bob' };
function greet(greeting, punctuation) {
console.log(`${greeting}, ${this.name}${punctuation}`);
}
greet.apply(person1, ['Hello', '!']); // Hello, Alice!
gree.apply(person2, ['Hi', '?']); // Hi, Bob?
Истифода:
- Пас додани массив аргументҳо ба функсия, ки онҳоро ҳамчун параметрҳои алоҳида интизор аст.
- Тағйир додани контексти
thisҳангоми даъвати функсия. - Истифода бо методҳои дарунсохт, ки чанд аргументро интизор мешаванд (масалан,
Math.max,Math.min).