JavaScript က ဒီ Keyword ပါ။
ဥပမာ
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
ဒါ ဘာလဲ ?
JavaScript this
သော့ချက်စကားလုံးသည် ၎င်းပိုင်ဆိုင်သည့်အရာအား ရည်ညွှန်းသည်။
၎င်းတွင်အသုံးပြုသည့်နေရာပေါ်မူတည်၍ မတူညီသောတန်ဖိုးများရှိသည်။
- method တစ်ခုတွင်၊ owner object
this
ကို ရည်ညွှန်းသည် ။ - တစ်ကိုယ်တည်း၊ ကမ္ဘာလုံးဆိုင်ရာအရာဝတ္ထု
this
ကို ရည်ညွှန်းသည် ။ - function တစ်ခုတွင်၊ global object
this
ကိုရည်ညွှန်းသည် ။ - လုပ်ဆောင်ချက်တစ်ခုတွင်၊ တင်းကျပ်သောမုဒ်တွင်
this
ဖြစ်သည်undefined
။ - ဖြစ်ရပ်တစ်ခုတွင်၊ အဖြစ်အပျက်ကို လက်ခံရရှိသည့် အစိတ်အပိုင်း
this
ကို ရည်ညွှန်းသည် ။ - ကဲ့သို့သော နည်းလမ်းများ
call()
နှင့် မည်သည့်အရာဝတ္ထုကိုမဆို ရည်ညွှန်းapply()
နိုင်သည် ။this
ဒါက Method တစ်ခုပါ။
object method တစ်ခုတွင် method ၏ " ပိုင်ရှင်this
" ကို ရည်ညွှန်းသည် ။
ဤစာမျက်နှာ၏ထိပ်ရှိ ဥပမာတွင်၊ လူ၏ အရာဝတ္တု this
ကို ရည်ညွှန်းသည် ။
လူ အ ရာဝတ္တုသည် fullName နည်းလမ်း ၏ ပိုင်ရှင် ဖြစ်သည် ။
fullName : function() {
return this.firstName + " " + this.lastName;
}
ဒီ တစ်ယောက်တည်း
တစ်ဦးတည်းအသုံးပြုသောအခါ၊ ပိုင်ရှင် သည် ကမ္ဘာလုံးဆိုင်ရာအရာဝတ္တုဖြစ်သောကြောင့် ကမ္ဘာလုံးဆိုင်ရာအရာဝတ္တုကို this
ရည်ညွှန်းသည်။
ဘရောက်ဆာဝင်းဒိုးတွင် ကမ္ဘာလုံးဆိုင်ရာအရာဝတ္ထုမှာ [object Window]
-
ဥပမာ
let x = this;
တင်းကျပ်သောမုဒ် တွင် တစ်ယောက်တည်းအသုံးပြုသည့်အခါ၊ this
Global object ကိုလည်းရည်ညွှန်းသည်
[object Window]
-
ဥပမာ
"use strict";
let x = this;
၎င်းသည် Function (ပုံသေ)
JavaScript လုပ်ဆောင်ချက်တစ်ခုတွင်၊ လုပ်ဆောင်ချက်ပိုင်ရှင်သည် default binding အတွက် this
ဖြစ်သည်။
ထို့ကြောင့် function တစ်ခုတွင်၊ this
Global object ကိုရည်ညွှန်းသည် [object Window]
။
ဥပမာ
function myFunction() {
return this;
}
Function (တင်းကျပ် )
JavaScript တင်းကျပ်သောမုဒ် သည် ပုံသေချိတ်ဆက်မှုကို ခွင့်မပြုပါ။
ထို့ကြောင့် function တစ်ခုတွင်အသုံးပြုသောအခါ၊ တင်းကျပ်သောမုဒ်တွင် this
ဖြစ်သည် undefined
။
ဥပမာ
"use strict";
function myFunction() {
return this;
}
ဒါက Event Handlers မှာ
HTML event handlers တွင် event this
ကိုလက်ခံရရှိသော HTML element ကိုရည်ညွှန်းသည်-
ဥပမာ
<button onclick="this.style.display='none'">
Click to
Remove Me!
</button>
Object Method Binding
ဤဥပမာများတွင်၊ လူ အရာဝတ္ထုဖြစ်သည် (လူအရာဝတ္တုသည် လုပ်ဆောင်ချက်၏ "ပိုင်ရှင်" ဖြစ်သည်) this
။
ဥပမာ
const person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return this;
}
};
ဥပမာ
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " +
this.lastName;
}
};
တစ်နည်းဆို ရ သော် this.firstName ဆိုသည်မှာ ဤ (လူ) အရာဝတ္တု ၏ ပထမအမည် ပိုင်ဆိုင်မှုကို ဆိုလိုသည်။
ရှင်းလင်းပြတ်သားသော Function Binding
နှင့် နည်းလမ်းများသည် ကြိုတင်သတ်မှတ်ထားသော JavaScript နည်းလမ်းများဖြစ်သည် call()
။apply()
၎င်းတို့ နှစ်ခုလုံးကို object method တစ်ခုအား argument အဖြစ် အခြား object ဖြင့် ခေါ်ရန် သုံးနိုင်သည်။
call()
ဤသင်ခန်းစာတွင် အကြောင်း နှင့် apply()
နောက်ပိုင်းတွင် သင်ပိုမိုဖတ်ရှုနိုင်ပါသည် ။
အောက်ပါဥပမာတွင်၊person1.fullName ကိုအငြင်းအခုံအဖြစ် person2 ဖြင့်ခေါ်ဆိုသောအခါ၊ this
၎င်းသည် person1 ၏နည်းလမ်းတစ်ခုဖြစ်သော်လည်း person2 ကိုရည်ညွှန်းပါမည်။
ဥပမာ
const person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
person1.fullName.call(person2); // Will return "John Doe"