This Keyword
1. What is this in JavaScript?
this হলো JavaScript-এর একটি special keyword যা কোন object-এর context-এ বর্তমান code চলছে তা refer করে। অন্য অনেক language-এ this সবসময় class-এর instance কে বোঝায়, কিন্তু JavaScript-এ this-এর value function কীভাবে call হয়েছে তার উপর নির্ভর করে — কোথায় define হয়েছে তার উপর নয়।
Code ExampleJavaScriptClick to view details
function show() {
console.log(this);
}
const obj = { name: 'Alice', show };
show(); // → Window (বা global)
obj.show(); // → { name: 'Alice', show: fn }
// একই function, কিন্তু this আলাদা — কারণ call করার ধরন আলাদা
How is this determined at runtime?
JavaScript-এ this নির্ধারণের ৪টি binding rule আছে। Engine এই rules গুলো priority অনুযায়ী check করে।
Code ExampleClick to view details
**this নির্ধারণের priority:**
1. new binding ← সর্বোচ্চ priority
2. Explicit binding ← call/apply/bind
3. Implicit binding ← object method call
4. Default binding ← সর্বনিম্ন priority
─────────────────────────
★ Arrow function ← উপরের কোনো rule প্রযোজ্য নয়,
lexical scope থেকে নেয়
Rule 1 — What is the default binding rule?
কোনো object ছাড়া, plain function call হলে this হয় global object (window browser-এ, global Node.js-এ)।
Code ExampleJavaScriptClick to view details
function showThis() {
console.log(this);
}
showThis(); // Browser: Window object
// Node.js: global object
Code ExampleJavaScriptClick to view details
var name = 'Global Alice'; // Browser-এ var global object-এর property হয়
function greet() {
console.log(this.name); // global object-এর name
}
greet(); // Browser: 'Global Alice'
// Node.js: undefined (var top-level-এ global property হয় না)
⚠️ সতর্কতা:
letএবংconstদিয়ে declare করা variable global object-এর property হয় না।
What happens in strict mode?
Strict mode-এ default binding-এ this হয় undefined — global object নয়। এটি accidental global variable তৈরি এবং global object mutation থেকে রক্ষা করে।
Code ExampleJavaScriptClick to view details
'use strict';
function showThis() {
console.log(this); // undefined
}
showThis(); // undefined — global object নয়!
Code ExampleJavaScriptClick to view details
'use strict';
function greet() {
console.log(this.name); // TypeError: Cannot read properties of undefined
}
greet(); // 💥 Error — this undefined, তাই .name access করা যাচ্ছে না
Strict mode এবং non-strict mode একসাথে থাকলে:
Code ExampleJavaScriptClick to view details
function nonStrict() {
console.log(this); // Window — নিজের mode অনুযায়ী
}
function strict() {
'use strict';
console.log(this); // undefined — নিজের mode অনুযায়ী
}
nonStrict(); // Window
strict(); // undefined