Mastering objects in Javascript

Kinanee Samson - Jun 29 '23 - - Dev Community

The object data structure is used to express real-life objects, just like a car is an object with a wheel property, a color property, a brand property, and so on thus a car in Javascript can be an object with these properties.

Objects are not unique to Javascript and work just like objects in other programming languages.

In today's post we are going to explore objects in Javascript, we will take a look at the following, starting with;

  • What objects are.
  • How to access object properties.
  • Using functions as object values.
  • Deleting Object properties.
  • Four different ways to create Objects in Javascript

What are objects

An object is a data structure that stores a collection of comma-separated key:value pairs. A key:value pair is collectively known as property. An object is expected to have at least one property for it to be considered a valid object.

To create a simple object in Javascript you can use the object literal expression. The object literal expression refers to a comma-separated key:value pairs enclosed within paired curly brackets. let's see an example.

const obj = {
  name: 'Sam',
  age: 30,
  employed: false
};

console.log(obj);
// {name: 'Sam', age: 30, employed: false};
Enter fullscreen mode Exit fullscreen mode

We create an object using the object literal expression by creating a variable named obj. The first property on this object is a name property which has a value of Sam, the second property is an age property which has a value of 30. The last property is an employed property which has a value of false.

Let's log out this variable to the console to see what it looks like.

The object created above is an example of a Javascript object, this is also what is known as an object literal. The object has three properties. Each has the appropriate value for that key, from this example, it can be observed that the value for a key on a Javascript object can be any of the primitive data types supported by Javascript.

Now we have seen what objects are in Javascript, let's see how we can access object properties.

How to access object properties

const name = obj.name
console.log(name)
// Sam
const age = obj['age'];
console.log(age);
// 30
Enter fullscreen mode Exit fullscreen mode

There are two ways for accessing the properties declared on an object.

  • Dot notation
  • Square bracket Notation

In the example above we use the dot notation to access the name property declared on the object, then we store it inside a variable called name. We log out this variable to the console and we see that is value Sam.

To use the square brackets notation you put an opening and a closing square bracket right after you the object then, inside paired single or double quotes you enter the key for the property you want to access, in this instance, we are concerned with the age property. We store it inside a variable called age and log it out to the console and its value is 30.

Using functions as object property values

We can use functions for the value of a key on an object and let's look at an example of that;

function sayHello() {
  console.log('Hello')
}

obj['greeting'] = sayHello;
obj.sayHello = sayHello;
Enter fullscreen mode Exit fullscreen mode

We create a function called sayHello and this function just logs out the word Hello to the console. To store this function in an object we would set it to be the value of a key.

To add this function to the object we created earlier, we can use the square bracket notation to achieve this.

We want the object to have a greeting property and we assign it the sayHello function we created earlier.

We can also use the dot notation to do this and we assign a sayHello property a value which is the sayHello function.

obj.greeting()
// hello
Enter fullscreen mode Exit fullscreen mode

We can also use the square bracket notation if that's what we are more comfortable with.

Deleting Object properties.

To delete an object property you can use the delete keyword together with the name of the property you want to delete. Say we wanted to delete the sayHello property we declared on the object.

delete obj.sayHello;

console.log(obj)
// {name: "Sam", age: 30, isEmployed: false, greeting: f}
Enter fullscreen mode Exit fullscreen mode

First comes the delete Keyword then the object and we use the dot notation to get access to the sayHello property, then we log out the obj to the console. And from the object we get we see that it doesn't contain that sayHello method anymore, only a greeting method. And properties whose values are functions are called methods.

Creating objects in Javascript

Using Object Assign

Object.assgin is used to clone an object, this method accepts two parameters.

This method accepts two arguments(target, source), The first is the target object we are trying to create, and the second is the source object whose properties we want to clone.

const sayHello = (name) => (`Hello ${name}`);
const Person = Object.assign({ 
    name: "sam",
    age: 25
},
{
    sayHello,
    title: "Mr"
})
console.log(Person);
// {name: "sam", age: 25  sayHello: f, title: "Mr"}
Enter fullscreen mode Exit fullscreen mode

We clone an object with a title property and sayHello method (source) to an object with a name and age property (target).

Using Object.create

Object.create is similar to the method we just discussed. However, it creates a new object, not a clone.

It only accepts one argument, an object that will serve as the prototype of the object we are creating.

const sayHello: (name) => (`Hello ${name}`);
const Person = Object.create({
    sayHello,
    title: 'Mr',
});
Person.name = "Sam";
Person.name = 25
console.log(Person);
// { name: "sam", age: 25 }
Enter fullscreen mode Exit fullscreen mode

The object created has a name property and an age property.

Using Object.getPrototypeOf(Person) will give an object with a title property and sayHello method. I particularly like using this approach.

console.log(
 Object.getPrototypeOf(Person)
);
// {sayHello: f, title: "Mr"}
Enter fullscreen mode Exit fullscreen mode

new Object

You can use the built-in Object constructor to create an Object, the Object constructor function accepts an optional parameter.
An object whose property we want to copy onto the new Object. Using dot notation wouldn't be too intuitive.

Let Person = new Object({
    name: "sam",
    age: 25
})
console.log(Person);
// { name: "sam", age: 25 }
Enter fullscreen mode Exit fullscreen mode

The object created has a name property and an age property.
Likewise, Object.getPrototypeOf(Person) will return an empty object.

Object Literal

The simplest approach is to use an object literal expression to create an object.
An Object literal is just a collection of comma-separated keys:value pair.
example;

const Person = { name: "sam", age: 30 }
Enter fullscreen mode Exit fullscreen mode

You can wrap it in a function to make it reusable or have dynamic values, Object.getPrototypeOf(Person) will also return an empty object.

const MakePerson = (name, age) => {
    return ({
        name,
        age
    })
}
const Person = MakePerson("sam", 25)
console.log(Person);
// { name: "sam", age: 25 }
Enter fullscreen mode Exit fullscreen mode

Calling Object.getPrototypeOf(Person) will return an empty object because this method does not attach a prototype to the object.

That's it for this one guys. If you found this useful please leave your comments down below I will see you in the next one.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .