JavaScript this Keyword

In this chapter, we will learn about the this keyword in JavaScript. The this keyword is a fundamental concept that refers to the object it belongs to. We will cover:

  • What is this?
  • Global Context
  • Object Method
  • Constructor Function
  • Class Method
  • Arrow Functions
  • Event Handlers
  • Simple Programs using this

What is this?

The this keyword refers to the object it belongs to. Its value depends on where it is used:

  • In a method: this refers to the owner object.
  • Alone: this refers to the global object (in browsers, the window object).
  • In a function: this refers to the global object.
  • In an event: this refers to the element that received the event.
  • In a class constructor: this refers to the newly created instance.

Global Context

When used alone or in a function in non-strict mode, this refers to the global object.

Example

console.log(this); 

Output:

Window { ... } // In a browser environment 

Object Method

When this is used in an object method, it refers to the owner object.

Example

let person = { firstName: "Amit", lastName: "Kumar", getFullName: function() { return `${this.firstName} ${this.lastName}`; } }; console.log(person.getFullName()); 

Output:

Amit Kumar 

Constructor Function

In a constructor function, this refers to the newly created instance.

Example

function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } let person = new Person("Amit", "Kumar"); console.log(person.firstName); console.log(person.lastName); 

Output:

Amit Kumar 

Class Method

In a class method, this refers to the instance of the class.

Example

class Person { constructor(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } getFullName() { return `${this.firstName} ${this.lastName}`; } } let person = new Person("Amit", "Kumar"); console.log(person.getFullName()); 

Output:

Amit Kumar 

Arrow Functions

In arrow functions, this retains the value from the enclosing lexical context. Arrow functions do not have their own this.

Example

let person = { firstName: "Amit", lastName: "Kumar", getFullName: function() { let arrowFunction = () => `${this.firstName} ${this.lastName}`; return arrowFunction(); } }; console.log(person.getFullName()); 

Output:

Amit Kumar 

Event Handlers

In event handlers, this refers to the element that received the event.

Example

<button id="myButton">Click me</button> <script> document.getElementById("myButton").addEventListener("click", function() { console.log(this); // Refers to the button element }); </script> 

Output:

<button id="myButton">Click me</button> 

Simple Programs using this

Program 1: Using this in Object Methods

let car = { make: "Toyota", model: "Camry", displayInfo: function() { return `${this.make} ${this.model}`; } }; console.log(car.displayInfo()); 

Output:

Toyota Camry 

Program 2: Using this in Constructor Functions

function Animal(type, sound) { this.type = type; this.sound = sound; } Animal.prototype.makeSound = function() { return `${this.type} goes ${this.sound}`; }; let dog = new Animal("Dog", "Bark"); console.log(dog.makeSound()); 

Output:

Dog goes Bark 

Program 3: Using this in Class Methods

class Rectangle { constructor(width, height) { this.width = width; this.height = height; } getArea() { return this.width * this.height; } } let rect = new Rectangle(10, 5); console.log(rect.getArea()); 

Output:

50 

Program 4: Using this in Arrow Functions

let person = { name: "Rahul", introduce: function() { let arrowFunction = () => `Hi, my name is ${this.name}`; return arrowFunction(); } }; console.log(person.introduce()); 

Output:

Hi, my name is Rahul 

Program 5: Using this in Event Handlers

<!DOCTYPE html> <html> <head> <title>Event Handler Example</title> </head> <body> <button id="clickMeButton">Click me</button> <script> document.getElementById("clickMeButton").addEventListener("click", function() { console.log(this); // Refers to the button element }); </script> </body> </html> 

Output:

<button id="clickMeButton">Click me</button> 

Conclusion

In this chapter, you learned about the this keyword in JavaScript, including its different contexts and how it behaves in various scenarios such as global context, object methods, constructor functions, class methods, arrow functions, and event handlers. We also provided various use cases with simple programs to demonstrate the usage of this. Understanding the this keyword is crucial for writing effective and maintainable JavaScript code.

Leave a Comment

Scroll to Top