My Works & learnings

JavaScript Basics - this

September 03, 2020

This keyword concept in JavaScript…!!

How this works in our code bases ?

Its is based on where we call and how we call

let a = {
    b: 6,
    c: 7,
    d: function() {
        return this.b + this.c;
    }
}
a.d();
let f = a.d;
f();
window.b = 6;
window.c = 8;
f();

When do we use this in our code bases ?

Sample Code using this for variables

We use the this keyword in cases when we would like to pass the data in the constructor and use that variables in other functions. In the below example we are passing a and b variables. This variables are used in all functions.

class Sample {
    constructor(a, b) {
        this.a = a;
        this.b = b;
    }
    sum() {
        return this.a + this.b;
    }

    diff() {
        return this.a - this.b;
    }

    multiply() {
        return this.a * this.b;
    }
}
let sam = new Sample(5,6);
let sum = sam.sum();
let diff = sam.diff();
let multiply = sam.multiply();

Sample Code using this for functions

We use this in cases when we want to access functions from other functions. There is no confusion here till now.

class Sample {
    constructor(a, b) {
        this.a = a;
        this.b = b;
    }
    sum() {
        return this.a + this.b;
    }
     
    diff() {
        return this.a - this.b;
    }

    multiply() {
        return this.a * this.b;
    }
    printAll(){
      console.log(this.sum())
      console.log(this.diff())
      console.log(this.multiply())
    }
}
let sam = new Sample(5,6);
let sum = sam.printall();
let diff = sam.diff();
let multiply = sam.multiply();

Sample Code using this for map

This below code throws an error. Why ? This is because we are using passing the callback function in foreach. This parameter function is not is binded to any function and executed some where else.

This is the reason we use bind. Bind will tell the function what is the this means.

class SampleMapExample {
    constructor(a, b) {
       
        this.arr = [1 , 2, 3];
        this.sum = 0;
    }
    add() {
       this.arr.forEach(function(item){
        this.sum = this.sum + item;
       })  
       return this.sum;
       
    }
}
let sam = new SampleMapExample([5,6]);
let sam.add();

Vishnu Sandhireddy

Written by Vishnu Sandhireddy who lives and works in Hyderabad, India. twitter