Autoplay

    this in the Global Context

    Marius SchulzMarius Schulz

    JavaScript's this mechanism behaves a little differently compared to other languages. When used in the global context (outside of any function), this refers to the global object. This lesson highlights the different behavior between Node and the browser.

    javascriptJavaScript
    Code

    Code

    Become a Member to view code

    You must be a Member to view code

    Access all courses and lessons, track your progress, gain confidence and expertise.

    Become a Member
    and unlock code for this lesson
    Transcript

    Transcript

    Instructor: 00:01 JavaScript's this mechanism behaves a little differently compared to other languages. It might not always be intuitive. Let's start off by looking at how this works in the global execution context. When used outside of any function, this refers to the global object.

    00:18 In the browser, that would be window. It doesn't matter whether or not we are in strict mode. A top-level this always refers to the global object. Now let's switch over to node. At the top level, this is equivalent to the global object as well, which is called global.

    00:42 However, that is only true within the node REPL. Let's execute the same line of code within a node module. Suddenly, we get false. This is because, in the top-level code of a node module, this is equivalent to module.exports.

    01:09 If we now run the program again, we get true. The node engine runs each module code inside of a REPL function. That REPL function is invoked with a this value set to module.exports. In a future lesson, we are going to discuss how to invoke a function with a specific this value using either call, apply, or bind.

    Discuss

    Discuss