Funksiyaning apply() metodi

ULASHISH

Metodni qayta ishlatish

apply() metodi turli obyektlarda ishlatilishi mumkin bo‘lgan metod yozish imkonini beradi.

apply() metodi funksiyani ma’lum bir this bilan chaqirish uchun ishlatiladi.

apply() metodi call()’ga o‘xshaydi, lekin u argumentlarni massivda uzatadi.

apply() — murakkab mavzu.

Davom etishdan oldin this va call() mavzularini tushunganingizga ishonch hosil qiling.

this kalit so‘zi

call() metodi


Asosiy apply() sintaksisi

apply() metodi obyektni argument sifatida berib funksiyani chaqirish uchun ishlatiladi.

apply() metodi this ni birinchi argument sifatida qabul qiladi.

Ikkinchi argument funksiyaga berilgan qiymatlar massividir.

apply() metodi call() metodiga (oldingi bob) o‘xshaydi.

Sintaksis

functionName.apply(this, [arg1, arg2, ...]);

apply() yordamida this ni belgilash

'

apply()’dan foydalanganda this nimaga ishora qilishini o‘zingiz belgilashingiz mumkin.

Quyidagi misolda greet funksiyasi salomlashuv matni + this.name ni qaytaradi.

apply()’dan foydalanganda this person3 obyekti bo‘lishini o‘zingiz belgilaysiz.

Misol

const person1 = { name: "John" };
const person2 = { name: "Paul" };
const person3 = { name: "Ringo" };

function greet(greeting) {
  return greeting + " " + this.name;
}

greet.apply(person3, ["Hello"]);
O‘zingiz sinab ko‘ring »

call() va apply() o‘rtasidagi farq

apply() va call() o‘rtasidagi yagona farq — argumentlarning qanday uzatilishi.

call() metodi argumentlarni alohida-alohida qabul qiladi.

apply() metodi argumentlarni massiv sifatida qabul qiladi.

Argumentlaringiz allaqachon massivda saqlangan bo‘lsa, apply()’dan foydalaning.

Misol

greet.call(person, "Hello");
greet.apply(person, ["Hello"]);

Boshqa obyektdan metodni qarzga olish

Boshqa obyektdan metodni qarzga olish uchun apply()’dan foydalanishingiz mumkin:

1-misol

person obyektining fullName metodini person1 ga qo‘llang:

// Create a person Object
const person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}

// Create a person1 Object
const person1 = {
  firstName:"John",
  lastName: "Doe"
}

// Create a person2 Object
const person2 = {
  firstName:"Mary",
  lastName: "Doe"
}

// This will return "John Doe":
person.fullName.apply(person1);

O‘zingiz sinab ko‘ring »

Ushbu 2 ta misolda apply() metodi call() metodi bilan aynan bir xil ishlaydi.

2-misol

person obyektining fullName metodini person2 ga qo‘llang:

// Create a person Object
const person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}

// Create a person1 Object
const person1 = {
  firstName:"John",
  lastName: "Doe"
}

// Create a person2 Object
const person2 = {
  firstName:"Mary",
  lastName: "Doe"
}

// This will return "Mary Doe"
person.fullName.call(person2);

O‘zingiz sinab ko‘ring »


Argumentlar bilan apply() metodi

apply() metodi argumentlarni massiv ko‘rinishida qabul qiladi.

Barcha argumentlar massiv ichiga, to‘g‘ri tartibda joylashtirilishi kerak.

Misol

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

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

person.fullName.apply(person1, ["Oslo", "Norway"]);

O‘zingiz sinab ko‘ring »

call() metodi bilan taqqoslang:

Misol

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

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

person.fullName.call(person1, "Oslo", "Norway");

O‘zingiz sinab ko‘ring »



apply() yordamida massiv metodlarini simulyatsiya qilish

apply()’ning keng tarqalgan qo‘llanilishlaridan biri — Math funksiyalarini massivlar bilan ishlatish.

Math.max() metodi son argumentlari ro‘yxatidagi eng katta sonni qaytaradi:

Misol

Math.max(4, 8, 5, 1);  // Will return 8

O‘zingiz sinab ko‘ring »

JavaScript massivlarida max() metodi yo‘q, lekin uni apply metodi yordamida simulyatsiya qilish mumkin.

Misol

const numbers = [4, 8, 5, 1];

Math.max.apply(null, numbers);

O‘zingiz sinab ko‘ring »

Yuqoridagi misolda null this sifatida ishlatiladi, chunki Math.max() ga this qiymati kerak emas.

Ushbu misollar bir xil natijani beradi:

Misollar

Math.max.apply(" ", numbers);

O‘zingiz sinab ko‘ring »

Math.max.apply(0, numbers);

O‘zingiz sinab ko‘ring »


JavaScript qat’iy rejimi (strict mode)

JavaScript qat’iy rejimida, apply() metodining birinchi argumenti obyekt bo‘lmasa, u chaqirilgan funksiyaning egasi (obyekti) bo‘ladi. "Qat’iy bo‘lmagan" rejimda u global obyektga aylanadi.


apply() yangi funksiya yaratmaydi

call() metodi ham, apply() metodi ham funksiyani darhol ishga tushiradi.

Ular yangi funksiya qaytarmaydi.

Misol

function sum(a, b) {
  return a + b;
}

sum.apply(null, [4, 5]);

Agar keyinroq xuddi shu this bilan chaqirish mumkin bo‘lgan funksiya kerak bo‘lsa, o‘rniga bind()’dan foydalaning.


Keng tarqalgan xatolar

  • Massivdan foydalanishni unutish

    apply()’ning ikkinchi argumenti massiv bo‘lishi shart.
  • apply() ni bind() bilan adashtirish

    apply() darhol ishga tushadi. bind() esa yangi funksiya qaytaradi.
  • call() soddaroq bo‘lgan holda apply()’dan foydalanish

    Agar sizda massiv bo‘lmasa, call() ko‘pincha tushunarliroq bo‘ladi.

Keyingi bob

JavaScript funksiyaning bind() metodi


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!