مثال ـ كي وردthis
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
در جاوااسكريت كي وردthis بيك شئ اشاره دارد .كدام شئ ، بستگي به نحوي فراخواني يا استفاده دارد.
كي وردthis باشياء مختلف وابسته به استفاده ، اشاره ميكند .مطابق زير :
توجه ـthis متغير نيست، آن يك كلمه رزرو شده است .نميتوان مقدارآن را تغييرداد .
هنگاميكه آن در متدي استفاده ميشود، آن اشاره به شئ دارد .در مثال بالاthis اشاره به شئperson دارد . چون متدfullName مربوط به شئ person است .
مثال ـthis در متد
fullName : function() {
return this.firstName + " " + this.lastName;
}
هنگاميكه كي وردthis به تنهائي استفاده ميشود، آن به شئ سراسري اشاره دارد . چون آن در ميدان سراسري اجرا ميگردد.
در يك مرورگر ويندو شئ سراسري[object Window] است .
مثال ـthis به تنهائي
let x = this;
در حالت سختگيرانه(strict mode) هنگامي كه this به تنهائي استفاده مي شود، بيك شئ سراسري اشاره دارد.
مثال ـ كي وردthis به تنهائي در مد سختگيرانه
"use strict";
let x = this;
در يك تابع ، شئ سراسري بصورت پيش فرض مورد اشارهthis است .
در يك مرورگرويندو شئ سراسري[object window] مورد اشاره است .
مثال ـthis در تابع
function myFunction() { return this; }
جاوااسكريپت سختگيرانه اجازه اتصال پيش فرض را برايthis نميدهد .نتيجه دراين شرايط، براي آنundefined است.
مثال ـthis در تابع با حالت سختگيرانه
"use strict"; function myFunction() { return this; }
در كنتركننده هاي رويداديHTML كي وردthisبه عنصر دريافتي رويداد اشاره دارد .
مثال ـthis در رويداد
<button onclick="this.style.display='none'"> Click to Remove Me!
مثال ـ در اين مثالthis به متد person وصل است
const person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return this;
}
};
مثال ـ نام كامل نمايش داده ميشودthis .به person اشاره دارد .
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
در مثال فوقthis.firstNameويژگيfirstNameشئ person است يعني person.firstName
متدهايcall() , apply( ) از پيش تعريف شده در جاوااسكريپت ميباشند .
آن دو ميتوانند براي فراخواني يك متد شئ با شئ ديگربه عنوان آرگومان استفاده شوند.
در مثال زير متدperson1.fullName با شئ person2 بعنوان آرگومان فراخوان ميشود .كي ورد در اين متد بهperson2 اشاره ميكند، هرچند كه fullName متد person1 است .
مثال ـ استفاده از متدcall( )
const person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
// Return "John Doe":
person1.fullName.call(person2);
با متدbind( )، يك شئ ميتواند متدي را از شئ ديگر قرض بگيرد .
مثال ـ در اين مثال دو شئnumber و person ايجاد ميشود .در آن شئ number متد 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);
در جدول زير اولويتthis به ترتيب مشخص شده است .
اولويتPrecedence - | شئobject - |
---|---|
1 | bind( ) |
2 | apply( ) and call( ) |
3 | object method |
4 | Global Scope |
اين جدول بدين معني است كه اگر جاوااسكريپت بهthis برخورد نمود، اول بررسي ميشود كه مربوط بهbind( ) است .در صورت درست بودن اشاره مرتبط با آن برايthis منظور ميشود .در غير اينصورت رديفهاي بعدي.