JavaScript OOP හි ක්‍රම කේතයේ සන්දර්භය අහිමි වීම

වර්ගයක ක්‍රමයක මූලාශ්‍ර කේතය භාවිතා කරන විට සන්දර්භය අහිමි විය හැක. අපි උදාහරණයක් දෙස බලමු. අප සතුව පහත වර්ගය ඇතැයි සිතමු:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
  getName() {
    return this.#name;
  }
}

මෙම වර්ගයේ වස්තුවක් සාදමු:

javascriptlet user = new User('john');

ක්‍රම කේතය විචල්‍යයකට ලියමු:

javascriptlet func = user.getName;

ක්‍රමය විචල්‍යයකට ලියන මොහොතේ සන්දර්භය අහිමි විය. දැන් this ක්‍රම කේතය තුළ වර්ග වස්තුව දක්වන්නේ නැත. අපි අපේ ශ්‍රිතය ක්‍රියාත්මක කර පරීක්ෂා කරමු:

javascriptconsole.log(func()); // දෝෂය

ගැටලුව විසඳීම සඳහා ඔබට සන්දර්භය ශ්‍රිතයට බැඳිය හැකිය, උදාහරණයක් ලෙස, bind හරහා:

javascriptfunc = func.bind(user);
console.log(func()); // ක්‍රියාත්මක වේ