JavaScript හි බැඳුම්කරයක් නොමැති ශ්රිතයක සන්දර්භය
කාර්යයක් තුළ
this යොදා ඇති නමුත් එය කිසිදු අංගයකට
බැඳී නොමැති විට කුමක් සිදුවේදැයි බලමු,
මෙවැනි අවස්ථාවක:
function func() {
console.log(this);
}
func();
මෙම අවස්ථාවේ ප්රතිඵලය රඳා පවතින්නේ
කැපී පෙනෙන
ප්රකාරය අප සතුව තිබේද නැද්ද යන්න මත ය.
ප්රකාරය කැපී නොපෙනේ නම්,
this හි ගබඩා වන්නේ
window වෙත සබැඳියක් වේ:
function func() {
console.log(this); // window වෙත සබැඳිය
}
func();
කෙසේ වෙතත්, ප්රකාරය කැපී පෙනෙන එකක් නම්,
this හි ගබඩා වන්නේ
undefined වේ:
"use strict";
function func() {
console.log(this); // undefined
}
func();
ඉහත කියැවුණු දෑ වලින් එය පෙනෙන්නට ඇත්තේ
කැපී පෙනෙන ප්රකාරයේ දී this සෑම විටම
undefined වනු ඇති බවයි. එසේ නොවේ!
this ශ්රිතයකින් තොරව පමණක් ප්රතිදානය කරන්නේ නම්,
එහි ඇත්තේ window වෙත සබැඳියක් වන අතර එය
ප්රකාරයෙන් ස්වායත්ත වේ:
"use strict";
console.log(this); // this හි window වෙත සබැඳියක් ඇත
නිගමන
ඕනෑම ශ්රිතයක තුළ this ලිවිය හැකිය,
මෙය JavaScript හි යම් දෝෂයකට හේතු නොවේ.
නමුත් මෙම this හි නියමයෙන්ම ඇත්තේ කුමක් ද
යන්න ශ්රිතය ක්රියාත්මක කිරීමේ මොහොත දක්වා නිර්වචනය නොවේ.
එසේම, ශ්රිතය විවිධ අවස්ථාවලදී ක්රියාත්මක කිරීමේදී this
විවිධ අගයන් ගත හැකිය. සියල්ල රඳා පවතින්නේ
ශ්රිතය ක්රියාත්මක කරන ලද සන්දර්භය මත ය.