Skip to content Skip to sidebar Skip to footer

Javascript This Keyword - Inside Function

I am trying to understand the this keyword on Javascript. I was doing some tests on chrome console and I came across two different results that I was expecting to be the same: var

Solution 1:

this refers to the current object on which the function is called. When you called test1, you would have done like this

myTest.test1()

Now, test1 is called on myTest object. That is why this refers to myTest in the first case.

In the second case, you would have executed like this

myTest.test1()()

myTest.test1() returns a function and you are invoking without any current object. In that case, JavaScript will make sure that this will refer the global object (window in this case).

Note: But, in strict mode, this will be undefined, in the second case. You can confirm that like this

var myTest = {};
myTest.test1 = function() {
    returnfunctiontest2() {
        console.log("this is global", this === window);
        console.log("this is undefined", this === undefined);
        returnthis;
    }
}

myTest.test1()();

Output will be

thisis global truethisis undefined false

But if you include use strict like this

"use strict";

var myTest = {};
myTest.test1 = function() {
    returnfunctiontest2() {
        console.log("this is global", this === window);
        console.log("this is undefined", this === undefined);
        returnthis;
    }
}

myTest.test1()();

Output will be

thisis global falsethisis undefined true

Post a Comment for "Javascript This Keyword - Inside Function"