با متدbind( ) يك شئ ميتواند متدي را از شئ ديگر قرض يا در اختيار بگيريد.
در مثال زير دو شئperson و member ايجاد ميشود .شئ member متد fullName را از person قرض ميگيرد.
مثال ـ قرض گرفتن متد
const person = { firstName:"John", lastName: "Doe", fullName: function () { return this.firstName + " " + this.lastName; } } const member = { firstName:"Hege", lastName: "Nilsen", } let fullName = person.fullName.bind(member);
گاهي اوقات استفادهbind( ) براي مراقب از دست رفتن this ميباشد .
مثال ـ در مثال زيرشئperson داراي متدdisplay ميباشد .دراين متد كيوردthis به شئperson اشاره دارد.
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
person.display();
هنگاميكه يك تابع براي يك پاسخ تماس(callback) استفاده ميشود this ازبين ميرود .
مثال ـ در اين مثال كوشش ميشود براي سه ثانيه متدdisplay در اختيار باشد، اما بجاي نتيجه درستundefined برگشت ميشود .
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
setTimeout(person.display, 3000);
متدbind( ) اين مشكل را برطرف ميكند .
در مثال زير متدperson.diplay ارطريق متدbind( ) براي شئ person فراخوان ميشود .
مثال ـ در اين مثال پس از سه ثانيه نام شخص را نمايش ميدهد.
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
let display = person.display.bind(person);
setTimeout(display, 3000);
در جاوااسكريت كي وردthis بيك شئ اشاره دارد .كدام شئ ، بستگي به نحوي فراخواني يا استفاده دارد.
كي وردthis باشياء مختلف وابسته به استفاده ، اشاره ميكند .مطابق زير :
توجه ـthis متغير نيست، آن يك كلمه رزرو شده است .نميتوان مقدارآن را تغييرداد .
در موردthis در بحش JavaScript this اطلاعات كاملتري را مطالعه فرمائيد.