Objects

Learn about objects, their properties, and methods. Understand how to create and manipulate objects.


JavaScript Essentials: Creating Objects

Creating Objects in JavaScript

Objects are fundamental building blocks in JavaScript. They allow you to group related data and functionality together. Essentially, an object is a collection of key-value pairs, where the key is a string (or symbol) and the value can be any JavaScript data type (number, string, boolean, array, other objects, functions, etc.).

Object Literals

The most common and straightforward way to create objects is using object literals. This involves defining an object using curly braces {} and specifying key-value pairs within those braces.

Syntax:

 const myObject = {
          key1: value1,
          key2: value2,
          key3: value3
        }; 

Example:

 const person = {
          firstName: "John",
          lastName: "Doe",
          age: 30,
          isEmployed: true,
          address: {
            street: "123 Main St",
            city: "Anytown"
          },
          greet: function() {
            console.log("Hello, my name is " + this.firstName + " " + this.lastName);
          }
        };

        console.log(person.firstName); // Output: John
        console.log(person.address.city); // Output: Anytown
        person.greet(); // Output: Hello, my name is John Doe 

In this example, person is an object with properties like firstName, lastName, age, isEmployed, and address. Note that the value of a property can be another object (like address) or a function (like greet). The `this` keyword within the `greet` function refers to the `person` object itself.

The new Keyword

The new keyword is used to create instances of objects from constructor functions. Constructor functions are regular functions that are designed to be used with the new keyword. By convention, constructor function names start with a capital letter.

Syntax:

 function MyObject(parameter1, parameter2) {
          this.property1 = parameter1;
          this.property2 = parameter2;
        }

        const myInstance = new MyObject("value1", "value2"); 

Example:

 function Car(make, model, year) {
          this.make = make;
          this.model = model;
          this.year = year;
          this.getDescription = function() {
            return this.make + " " + this.model + " (" + this.year + ")";
          };
        }

        const myCar = new Car("Toyota", "Camry", 2023);
        console.log(myCar.getDescription()); // Output: Toyota Camry (2023)

        const anotherCar = new Car("Honda", "Civic", 2022);
        console.log(anotherCar.getDescription()); // Output: Honda Civic (2022) 

When you use the new keyword with a constructor function, JavaScript does the following:

  1. Creates a new, empty object.
  2. Sets the this keyword within the constructor function to point to the newly created object.
  3. Executes the constructor function, which typically initializes the object's properties.
  4. Returns the newly created object.

Each object created with the new keyword is a distinct instance with its own set of properties, even if they are created from the same constructor function.

Summary

You've learned two primary ways to create objects in JavaScript:

  • Object Literals: The simplest and most common way for creating single objects.
  • The new Keyword: Used with constructor functions to create multiple instances of similar objects.

Choosing the appropriate method depends on your specific needs and the complexity of your application. Object literals are great for simple objects, while constructor functions are better suited for creating reusable object blueprints.