Understanding the this Keyword in JavaScript
Demystifying the Caller: How Execution Context Shapes the "this" Keyword

The this keyword is one of the most important and confusing concepts in JavaScript. Almost every JavaScript gets confused when learning what this means, why it changes , why it behaves differently in different places and many questions comes into brain. The concept becomes much easier if you understand one simple thought that this usually refers to the caller of the function.
What this represents
The this keyword represents the object that is currently calling the function. Simple think to keep in mind is that who is calling the functions, that caller becomes this .
Let's understand through a real world scenario where a TV remote used by different people . The remote can be used by different people like Rahul uses it, Mahi uses it , Priya uses it. The action is same but the user changes. Similarly here also this changes depending on who calls the function.
this in global context
When this is used outside any function or object, it refers to the global object. To Remember one thing that this behaves differently on Nodejs environment and browser. For example :
In browsers:
console.log(this);
Output :
Window object
In browser , the global object is window so this===window in global scope (browser environment).
NOTE: this behaves differently on nodejs and browser.
this inside objects
this inside objects is one of the most common use case of this. Let's understand by an example :
const user = {
name: "Rahul",
greet: function () {
console.log(this.name);
}
};
user.greet(); // OUTPUT : Rahul
Here , user.greet() function is calling the function inside the function so this=user so this point to the object i.e user. So this.name becomes user.name . One thing to remember that this objects refers to the objects calling the method.
this inside functions
this inside functions is little confusing segment but hold I will clear it out. It's better to understand through example it will easier to understand.
function test() {
console.log(this);
}
test();
The output of this function is window in browser (non-strict mode). Why window because the function is called directly test() no object is calling it. So JavaScript falls back to global object. Simply understand that No objects caller , then Global object becomes this.
this changes based on the calling context . This is the most important concept this depends on how the function is called instead where the function is written.
How calling context changes this
this changes based on the calling context . This is the most important concept this depends on how the function is called instead where the function is written. For example :
const person1 = {
name: "Rahul",
greet() {
console.log(this.name);
}
};
const person2 = {
name: "Amit"
};
person2.greet = person1.greet;
person2.greet();
Can you guess the output , the output is Amit because person2.greet() now person2 is calling the function so this=person2 . Important , even though the function originally belonged to person1, the caller will decides this, This is the core behavior of this .
One question you will came across that what happens without Object? The output may come from Global object (in browser). This is why using this carelessly can create unnecessary bugs.
Wrapping Up π
Thanks for reading till the end π
I hope this article helped you understand the topic in a simple, practical, and beginner-friendly way.
My goal is to break down complex tech concepts into clear, real-world explanations, especially for learners who are just starting out or feeling overwhelmed.
If you found this useful, feel free to bookmark, share, or leave a comment - it really helps and keeps me motivated to write more.
You can connect with me here:
π¦ X (Twitter)
πΌ LinkedIn
Letβs learn together and grow step by step π




