Explain the Concept of "this" in JavaScript
JavaScript’s this
keyword confuses many developers. It behaves differently based on execution context. Let’s break it down with examples.
What is "this"?
this
refers to the current execution context. Its value depends on how a function is called, not where it’s defined.
1. Global Context
Outside any function, this
refers to the global object (window
in browsers, global
in Node.js).
console.log(this); // Window (in browsers)
2. Function Context
In a regular function, this
depends on how it’s called:
- Default:
this
=window
(non-strict mode) /undefined
(strict mode). - Method:
this
= the object calling the method.
function greet() {
console.log(this); // Window (or undefined in strict mode)
}
const user = {
name: "John",
sayHi() {
console.log(this.name); // "John" (this = user object)
}
};
3. Arrow Functions
Arrow functions don’t have their own this
. They inherit it from the parent scope.
const user = {
name: "Alice",
greet: () => console.log(this.name) // undefined (inherits global `this`)
};
4. Explicit Binding (call, apply, bind)
Force this
to a specific object:
call()
/apply()
: Immediately invoke with a giventhis
.bind()
: Returns a new function with boundthis
.
function sayHi() {
console.log(this.name);
}
const user = { name: "Bob" };
sayHi.call(user); // "Bob"
const boundFunc = sayHi.bind(user);
boundFunc(); // "Bob"
5. Constructor Functions (new Keyword)
In constructors, this
refers to the newly created instance.
function Person(name) {
this.name = name;
}
const john = new Person("John");
console.log(john.name); // "John"
Common Pitfalls & Fixes
❌ Problem: Losing this
in callbacks.
✅ Fix: Use arrow functions or bind()
.
const button = document.querySelector("button");
button.addEventListener("click", function() {
console.log(this); // <button> (this = DOM element)
});
Key Takeaways
✔ this
is dynamic and changes based on how a function is called.
✔ Arrow functions don’t bind this
(lexical scoping).
✔ Use call()
, apply()
, or bind()
for explicit control.
At Online Learner, we're on a mission to ignite a passion for learning and empower individuals to reach their full potential. Founded by a team of dedicated educators and industry experts, our platform is designed to provide accessible and engaging educational resources for learners of all ages and backgrounds.
Terms Disclaimer About Us Contact Us
Copyright 2023-2025 © All rights reserved.