Conceptually, there are only 3 things you need to remember, the word “this”:
1. is used inside functions,
2. is a reference to an object,
3. is set WHEN calling a function (not when the code is evaluated)
In practice, there are 3 ways you can set / use “this”:
1. implicitly as a method call,
2. explicitly through .call() or .bind()
3. constructor call .i.e when calling a function with the “new” word preceding it.