JavaScript හි call ක්රමය හරහා සන්දර්භය බැඳීම
එබැවින්, this සැබෑවෙන් ක්රියා කරන ආකාරය
අපි විමර්ශනය කළෙමු. දැන් අපි බලමු, ශ්රිතයක් කුමන
සන්දර්භයකින් කැදවිය යුතුය යන්න බලහත්කාරයෙන් නියම කිරීමට
ඉඩ සලසන ක්රම (එනම්, this සමාන වන්නේ කුමකටද යන්න
බලහත්කාරයෙන් පැවසීමට ඉඩ සලසන ක්රම).
අපි විමර්ශනය කරන පළමු ක්රමය
call ලෙස හැඳින්වේ. අපි එහි ක්රියාකාරිත්වය
උදාහරණයක් මත දෙස බලමු. අපට input ක්ෂේත්රයක් ඇතැයි සිතමු:
<input id="elem" value="text">
අපි මෙම input ක්ෂේත්රයට සම්බන්ධීකරණය (reference) ලබාගෙන
එය elem යන විචල්යයට අගයයක් ලෙස ලියමු:
let elem = document.querySelector('#elem');
දැන් අපි func ශ්රිතයක් සාදා, එහි ඇතුළත
this.value ප්රතිදානය කරමු:
function func() {
console.log(this.value);
}
මෙතෙක්, අපගේ ශ්රිතයට this යොමු කරන්නේ කුමකටද
යන්න දැනගන්නේ නැත. අපි එය addEventListener හරහා
බැඳියේ නම්, එසේ නම් දන්නවා ඇත. නමුත් අපි එය කරන්නේ නැත.
ඒ වෙනුවට, අපි අපගේ ශ්රිතය කැදවන්නෙමු, එයට this
සමාන විය යුත්තේ elem ට බව පවසමින්.
එය කරනු ලබන්නේ මෙසේය: func.call(elem).
මෙම කේතය ශ්රිතය සරලව කැදවීමට සමාන වේ
func මෙසේ: func(), නමුත්
this සමාන වන්නේ elem ට යන කොන්දේසිය සමඟ.
එබැවින්, call ක්රමයේ වාක්ය ඛණ්ඩය මෙසේය: function.call(object).
අපි සියල්ල එකට
එකතු කරමු:
let elem = document.querySelector('#elem');
function func() {
console.log(this.value); // input හි value ප්රතිදානය කරයි
}
func.call(elem);
ශ්රිතයක් දී ඇත:
function func() {
console.log(this.value);
}
Input ක්ෂේත්ර තුනක් දී ඇත:
<input id="elem1" value="text1">
<input id="elem2" value="text2">
<input id="elem3" value="text3">
call ක්රමය සහ func ශ්රිතය භාවිතා කරමින්,
එක් එක් input ක්ෂේත්රයේ value තිරය මත ප්රතිදානය කරන්න.