Building stuff has never been easier! With a plethora of tutorials and resources available on the internet, it’s fair to say that we will soon have private spaceships that’ll take us to the moon.
Jokes aside, diving down the tutorial hole might seem counter-intuitive but, is never the ideal way to learn stuff. You can watch 100 JS tutorials, but you won’t know a damn thing if you don’t know the language fundamentals.
Oh! and… never forget to thank me. (By hitting the follow button)
What is “this”?
Example — If you’re inside the four walls of our house and you state:
This furniture needs to be repaired!
It typically means that you are referring to a piece of furniture that is inside your house. In essence, this here refers to your house’s furniture.
But, if you repeat the same sentence inside a furniture shop,
This now refers to the furniture inside the shop and not of your home.
Connecting it back to JS, the word “this” is used to refer to the object or the function inside which you have used the word.
‘this’ in global scope
If used in the global context, this refers to the global object i.e the ‘window’.
Let’s look at another example,
Here, window sofa and sofa both are available on a global scope.
But, these become the public property of windows that can be accessed from outside.
This brings me to my next point, What if I want to limit the furniture to my room only?
‘this’ inside an object
myHome is a private variable and it’s not accessible on “this”. Instead, I have to call in the following way-
‘this’ inside a function
myHome.print()-> denotes the method of myHome object
this.showroom.print()-> denotes the method of showroom object.
What if I want to print on the global scope? Let’s see what happens now.
Since I am executing it without strict mode, it prints the data. But what if I am using strict mode?
However, in strict mode, inside the function, ‘this’ is not set. Hence, it stays undefined. The reason being print() is called directly and not as a method or property of an object as shown in other examples.
Mystery Box: How do I use print() for this.furniture then?
Get the comments going, with your answers. I will reveal how to do it, next time.