- Overview
- Transcript
6.1 The `this` Object
The this
object is often confusing to JavaScript beginners. Depending on the context in which it’s used, this
can be bound to different objects. In this lesson, we’ll look at some of the ins and outs.
Syntax
this
1.Introduction2 lessons, 07:42
1.1Introduction02:12
1.2Setup05:30
2.Language Fundamentals8 lessons, 1:00:53
2.1Variables06:33
2.2Data Types11:28
2.3Arithmetic, Assignment, and Comparison Operators10:24
2.4Unary, Logical, Comma, and Spread Operators09:02
2.5Operator Precedence03:50
2.6Reserved Words04:17
2.7Strict Mode04:34
2.8Functions10:45
3.Data Structures5 lessons, 22:52
3.1Arrays04:29
3.2Objects04:30
3.3Sets04:57
3.4Maps04:21
3.5Weak Maps and Weak Sets04:35
4.Controlling Program Execution7 lessons, 37:06
4.1Conditionals07:49
4.2Switch Statements04:41
4.3The For Loop06:39
4.4The `for .. in` Loop05:17
4.5The `for .. of` Loop04:02
4.6Iterators05:03
4.7While Loops03:35
5.Using JavaScript13 lessons, 1:44:36
5.1Working With Strings09:32
5.2Template Literals05:46
5.3Working With Numbers06:57
5.4Working With Arrays12:53
5.5Iterating and Transforming Arrays07:33
5.6Working With the Object Type13:55
5.7Object Literal Extensions06:45
5.8Working With Object Instances06:45
5.9Getters and Setters05:00
5.10Custom Objects11:28
5.11The `Math` API04:54
5.12Working With Dates and Times08:10
5.13The `Array` Constructor04:58
6.Functions8 lessons, 56:07
6.1The `this` Object06:15
6.2Working With Functions10:11
6.3Scope07:37
6.4Arrow Functions06:59
6.5Generator Functions08:13
6.6Closures05:00
6.7Prototypes06:26
6.8Default and Rest Parameters05:26
7.Miscellaneous6 lessons, 52:39
7.1Destructuring Assignments08:09
7.2AJAX08:30
7.3Regular Expressions10:51
7.4More About Regular Expressions08:38
7.5Classes06:48
7.6ES Modules09:43
8.Working With the DOM6 lessons, 37:39
8.1Selecting HTML Elements05:02
8.2Manipulating HTML Elements07:40
8.3DOM Traversal05:25
8.4Adding and Removing Elements04:45
8.5Creating Elements and Other Nodes04:39
8.6DOM Events10:08
9.Web APIs4 lessons, 17:41
9.1The Selector API03:03
9.2Geolocation05:29
9.3Web Storage05:24
9.4Web Workers03:45
10.Asynchronous JavaScript5 lessons, 26:23
10.1Promises09:52
10.2Promise Chaining05:11
10.3The async Keyword03:21
10.4The await Keyword04:04
10.5More About async and await03:55
11.Conclusion1 lesson, 00:43
11.1Conclusion00:43
6.1 The `this` Object
Hi folks, in this lesson we're going to take a look at the this Object in JavaScript. The value of this Object is usually, but not always an Object. But it can refer to different Objects depending on where it is used. Inside a function, the value of this varies depending on how the function is called. For example, we are inside an immediately invoked function expression at the moment. So let's just try logging out the value of this to see what it refers to. And we can see that it is actually undefined inside a function. So when we use this inside a function and the function is invoked in the normal way that a function is invoked, with the double parenthesis at the end of it, this will be undefined in strict mode. Now the value will change if we're not in strict mode. And if we're not running in strict mode, inside a function, this will point to the global window object. And that can actually be quite dangerous. This is another reason why we need to always use strict mode, when applicable. If we are inside of a function which is the property of an object, so a method, this will point to that object. So in the second console log you can see that the object itself has been logged to the console, which means that the this Object points to the Object that the method is within. Now, we've called the function in a different way. We have used a set of parenthesis after the function to invoke it like we would do a regular function, but because the function is called as the method of an object, the value of this changes. And in this case it changes to the object that the method belongs to. Whenever we are outside of the function, the this object will still point to the window object, regardless of whether or not we're running in strict mode. So now we're outside of the immediately invoked function expression and as use strict is within the immediately invoked function expression, strict mode will only be applied inside the IFFE. We've now added a log outside of it. So let's just go back to the browser again. And you can see that we're logging the window once again. So use strict won't protect us in this case. As we saw in a previous lesson, there's also another time that the this object can point to something different. And that is when we are inside a constructor function. Now, we did already go over this but because that was in a different section of the course, I just want to recap over that once again. So it's a very similar example to the last time we looked at this topic. So we're using a constructor once again and the constructor accepts a name, arguments and inside of the constructor we just set a property of this to equal the name that gets passed into the constructor. So even though the constructor function is defined as a regular function, when we call it, as long as we're calling it properly, we will be calling it in a different way. We will be calling it like this. So the difference in how we are invoking the function this time is we are using the new keyword. And that's how JavaScript knows to invoke the function as a constructor. And when it invokes a function as a constructor, the this object inside the function will point to instances created by the constructor. It won't point to the constructor itself, like you might expect. So in this case where we have created a variable called Bob, when we invoke the person constructor, the Bob variable will end up containing and instance created by the passing constructor. And so in this case, this will point to the instance object. There is another time that the this object can change what it points to as well, and that's when we're inside the function which is being used as an event handler. In this case, the function will be invoked when an element triggers it from the UI, like when a button is clicked. In this case, the this object will be set to the element that triggered the event. So if it was a button that was clicked, which triggered the event, the this object will point to that button. We're gonna come back and look at event handlers in much more detail in the dom events lesson later in the course. For now, just understand that this is one more time when the this object might change what it points to, and that's when the function it is within is being used as an event handler. There are some different ways in which we can control what the this object points to, such as when we're using methods like call or apply. We did see the call method very briefly in an earlier lesson. But we're gonna come back and look at both of these methods in much more detail in the next lesson. So in this lesson, we looked at the different values that the this object can have in JavaScript depending on the context. We saw that in the global context, this points to the window object. And while we're inside a function, this is undefined. If we are inside the method of an object, this will point to the object itself. And when we use this inside a constructor, this will point to instance object. It's created by the constructor. In the next lesson then, we're going to move on and look at some methods and properties of function objects, including the call and apply methods. Thanks for watching.