Call, apply, bind

Call, apply, bind

Rajabov Doston

Assalomu aleykum hammaga !

Bugungi maqolamiz orqali call, apply va bind haqida gaplashamiz.


Call, apply va bind- bu JavaScript-da funksiyaning this kontekstini boshqarish uchun ishlatiladigan uchta usul. Ular sizga funktsiyani chaqirishda uning qiymatini aniq belgilashga imkon beradi. Keling, ularning har biri bilan alohida tanishib chiqamiz.

1. Call

Call funksiyani chaqirish uchun ishlatiladi va uning qiymatini aniq belgilash imkonini beradi. U o'zining birinchi parametri sifatida unga bog'langan ob'ektni oladi, so'ngra funktsiya kutgan qo'shimcha parametrlarni oladi.

Keling endi amaliy misol ko'ramiz:

const bookInfo={
getBookName(){
console.log(`Book name is: ${this.name}`);
},
getBookAuthor(){
console.log(`Book author is: ${this.author}`);
}
};


const book={name:"Call, apply, bind", author:"Rajabov Doston"};


bookInfo.getBookName(); // Book name is undefined
bookInfo.getBookAuthor(); //Author name is undefined


Bu yerda bizda bookInfo nomli obyektimiz va uning ikkita methodi mavjud. Biz bilamiz obyekt ichidagi this=object ga teng lekin bookInfo obyekti da name va author mavjud emas. Shu sababli ham natija undefined ga teng bo'ldi.

Bizda book obyekti mavjud va uning ichida name va author bor. Biz esa ushbu methodlarni book obyekti orqali ishlata olamiz. Buning uchun esa bizga call kerak

bookInfo.getBookName.call(book); //Book name is: Call, apply, bind
bookInfo.getBookAuthor.call(book); //Author name is: Rajabov Doston


2. Apply

Call ga o'xshab, apply funksiyani chaqirish va uning qiymatini aniq belgilash uchun ishlatiladi. Farqi shundaki, application oʻzining ikkinchi parametri sifatida massiv yoki massivga oʻxshash obyektni oladi va u funksiyaga argument sifatida uzatiladi.

function sayHello(greeting) {
console.log(`${greeting}, ${this.name}!`);
}
const person = { name: 'John' };
sayHello.apply(person, ['Good morning']); // Natija: Good morning, John!
sayHello.call(person, 'Good morning'); // Natija: Good morning, John!


3. Bind

Call va apply farqli o'laroq, bind funksiyani darhol chaqirmaydi. Buning o'rniga u keyinroq chaqirilishi mumkin bo'lgan yangi funktsiyani yaratadi.

function sayHello() {
console.log(`Hello, ${this.name}!`);
}
const person = { name: 'John' };
const sayHelloToJohn = sayHello.bind(person);
sayHelloToJohn(); // Natija: Hello, John!


Bind dan foydalanganda dastlabki argumentlarni ham ko'rsatishingiz mumkin:

function greet(greeting) {
console.log(`${greeting}, ${this.name}!`);
}
const person = { name: 'John' };
const greetJohn = greet.bind(person, 'Good evening');
greetJohn(); // Natija: Good evening, John!


Call, apply va bind ayniqsa, ob'ektning bir qismi bo'lgan method lar bilan ishlashda yoki ularning xatti-harakati uchun muayyan kontekstga tayanadigan funktsiyalar bilan ishlashda foydalidir. To'liqroq ma'lumot uchun havola.

Maqolada yo'l qo'yilgan imloviy xatolarga e'tibor bermaysiz degan umiddaman 😉😉




Report Page