JavaScript හි bind ක්‍රමය භාවිතයෙන් සන්දර්භය බැඳීම

ඊළඟ ක්‍රමය bind ශ්‍රිතයකට සන්දර්භය ස්ථිරව බැඳීමට ඉඩ සලසයි. මෙම ක්‍රමයේ ප්‍රතිඵලයක් ලෙස එය නව ශ්‍රිතයක් ලබා දෙයි, එහි ඇතුළත this සදා කාලීනව නිශ්චිත වටිනාකමක් ගන්නේය.

අපි උදාහරණයක් බලමු.

අපට input ක්ෂේත්‍රයක් ඇතැයි සිතමු:

html<input id="elem" value="text">

මෙම input ක්ෂේත්‍රයට යොමුව elem නම් විචල්‍යයේ ලියා ඇතැයි සිතමු:

javascriptlet elem = document.querySelector('#elem');

අපට ඊළඟට func ශ්‍රිතය ඇතැයි ද සිතමු:

javascriptfunction func(param1, param2) {
  console.log(this.value + param1 + param2);
}

bind භාවිතයෙන් func ශ්‍රිතයේ පිටපතක් වන, නමුත් එහි this සැමවිටම elem ට සමාන වන නව ශ්‍රිතයක් සාදා ගනිමු:

javascriptlet newFunc = func.bind(elem);

දැන් newFunc විචල්‍යය තුළ ශ්‍රිතය පවතී. අපි එය ක්‍රියාත්මක කරමු, පළමු පරාමිතියට '1', දෙවන පරාමිතියට '2' යොදමින් (මතක තබා ගන්න, elem හි value ගුණය 'text' ට සමාන වන input ක්ෂේත්‍රයක් ඇත):

javascriptnewFunc('1', '2');

අපි සියල්ල එකට එකතු කරමු:

javascriptlet elem = document.getElementById('elem');

function func(param1, param2) {
  console.log(this.value + param1 + param2);
}

let newFunc = func.bind(elem);
newFunc('1', '2'); // 'text12' ප්‍රතිදානය කරයි

bind හි ප්‍රතිඵලය නව ශ්‍රිතයක් වන newFunc හි ලිවීම අවශ්‍ය නොවේ. ඒ වෙනුවට හුදෙක් func නැවත ලිවිය හැකිය. ඊට පසුව func කලින් තිබූ ආකාරයටම එකම ශ්‍රිතය වේ, නමුත් දැන් එහි this දැඩි ලෙස බැඳී ඇත:

javascriptfunc = func.bind(elem);
Задание 1

පහත කේතය ලබා දී ඇතැයි සිතමු:

html<input id="elem" value="hello">
javascriptlet elem = document.getElementById('elem');

function func(name, surname) {
  console.log(this.value + ', ' + name + ' ' + surname);
}

// මෙහි bind() සමග ඉදිකිරීම ලියන්න

func('John', 'Smit'); // මෙහි 'hello, John Smit' ප්‍රතිදානය විය යුතුය
func('Eric', 'Luis'); // මෙහි 'hello, Eric Luis' ප්‍රතිදානය විය යුතුය

func ශ්‍රිතය තුළ this සැමවිටම elem විචල්‍යයේ ඇති input ක්ෂේත්‍රයට යොමු වන පරිදි bind ක්‍රමය සමග ඉදිකිරීම දක්වන තැන ලියන්න.