JavaScript is a flexible, object oriented language. This means that it allows developers to create different kinds of objects for different purposes. Almost everything in JavaScript (except Primitive types) is an object (Booleans, Strings, Numbers, Dates, Arrays, Functions, Objects, etc).
Creating Objects
Let us look at the different ways to create an object in JS.
1. Object Literal
This is the most popular and easiest way of creating objects. Object literal consists of the type of variable/object name (let, var, or const), object name, and the collection of properties inside it. Here’s an example to understand it better -
let obj = {}; // Object Literal
A more detailed object literal -
let userDetails = {
firstName: 'Arya',
lastName: 'Stark',
occupation: 'Girl With No Name',
};
2. Object Constructor
Constructors are special functions that are called when an object is created with the new
keyword. Take a look at the example below -
let person = new Object({
name: 'Jon',
family: 'Targaryen',
occupation: 'Dragon Rider',
});
Here, the keyword new
is used along with the case-sensitive keyword Object
, indicating that it is a special keyword used in creating objects through Object Constructor method.
The result is the same as creating object through Object Literals.
3. Object.create
This is another method to create new objects, which gives us more control over handling them. Object.create
accepts a parameter, which can be either null
or an object (key-value pairs).
let user = Object.create({
name: 'Vinoo',
designation: 'Developer',
});
If we pass null
as the parameter, it still creates an empty object.
The this
keyword
In simple words, this
is a special predefined variable that is present in every function declaration. The value of this
variable changes according to the way we call the function in which it is defined.
this
is used in both global and function contexts. It always points to an object. More specifically, this
references the object that is currently calling the function.
Example -
const add5 = {
a: 10;
addition: function() {
return this.a = this.a + 5;
}
};
add5.addition();
Here, addition()
is a function which is a property of the add5
object (a function inside a property becomes a method). Hence, inside the addition()
method, this
references the add5
object.
Whenever we call a function through an object ( e.g -add5.addition()
), this
will always point to that object.
In Global context, this
refers to the global object, which is the window
object in a web browser.
If we run the following snippet, it can be seen thatthis
points to the window
global object -
console.log(this === window); //true
Essentially, if a property is assigned to this
, then that property is added to the global object, and can be accessed by the window
object.
Example -
this.value = 21;
console.log(window.value);
The output will be 21
.
this
keyword has more use cases in the Function context, which we shall see in an upcoming post.
Stay tuned! ๐