Sobes.tech
Junior

Чӣ тавр методи apply дар JavaScript кор мекунад?

sobes.tech AI

Ҷавоб аз AI

Рамзи apply дар функсияҳо истифода мешавад ва имкон медиҳад, ки ин функсия бо арзиши муайяншудаи this ва аргументҳо, ки дар шакли массив (ё объекти монанд ба массив) дода шудаанд, фаро хонда шаванд.

Аспектҳои асосӣ:

  1. Танзим кардани this: Аргументи аввалини методи apply арзиши калимаи калидии this-ро дар дохили функсияи даъватшуда муайян мекунад. Агар null ё undefined дода шавад, дар режими ғайри қатъӣ, this ба объекти глобалӣ (масалан, window дар браузер ё global дар Node.js) ишора мекунад, ва дар режими қатъӣ, он боқӣ мемонад undefined.
  2. Пас додани аргументҳо: Аргументи дуюм массив (ё объекти монанд ба массив) мебошад, ки унсурҳои он аргументҳои функсияи даъватшуда хоҳанд буд, дар тартиби онҳо дар массив.

Синтаксис:

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).