Funksiyaning apply() metodi
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.
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);
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);
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"]);
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");
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:
JavaScript massivlarida max() metodi yo‘q, lekin uni apply metodi yordamida simulyatsiya qilish mumkin.
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);
Math.max.apply(0, numbers);
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!
