Skip to content

JavaScript funksiyasi "apply()"

apply() metodi call() metodiga juda o'xshash, u ham bir obyektning metodini boshqa obyekt uchun ishlatish (bog'lash) uchun xizmat qiladi.


call() va apply() o'rtasidagi farq

Asosiy farq argumentlarni qanday qabul qilishidadir:

  • call() argumentlarni alohida-alohida qabul qiladi (arg1, arg2, ...).
  • apply() argumentlarni massiv (array) ko'rinishida qabul qiladi ([arg1, arg2, ...]).

Misol

js
const person = {
  fullName: function (city, country) {
    return this.firstName + ' ' + this.lastName + ', ' + city + ', ' + country
  }
}

const person1 = {
  firstName: 'John',
  lastName: 'Doe'
}

// Argumentlar massiv ko'rinishida uzatilmoqda:
person.fullName.apply(person1, ['Oslo', 'Norway'])

Massivlarda apply() metodidan foydalanish

apply() metodi massivlar bilan ishlashda juda qo'l keladi. Masalan, massiv ichidagi eng katta sonni topish uchun Math.max() funksiyasidan foydalansak bo'ladi.

Math.max() odatda massivni qabul qilmaydi, u alohida sonlarni kutadi. Lekin apply() orqali massivni unga uzatish mumkin.

Misol

js
const numbers = [5, 6, 2, 3, 7]

// Math.max.apply(null, numbers)
let max = Math.max.apply(null, [1, 2, 3]) // 3 qaytaradi

Null nima uchun?

Math.max metodi this kontekstiga muhtoj emas, shuning uchun birinchi argumentga null yoki Math obyektining o'zi yuboriladi.


Zamonaviy muqobil: Spread operatori (...)

Hozirgi kunda (ES6+) apply() o'rniga ko'pincha "spread" operatoridan foydalanish qulayroq va osonroq:

Misol

js
const numbers = [5, 6, 2, 3, 7]
let max = Math.max(...numbers)