Understanding Constructors

Welcome aboard the OOP spaceship! Today, we will delve into constructors within JavaScript classes, which are pivotal for creating and initializing objects. Imagine a constructor as a recipe, defining the necessary ingredients for each object, just as for each cookie.

Constructors are unique methods within JavaScript classes, automatically called when creating a new object. Much like a recipe for a cake, constructors lay out the ingredients for our objects.

If we fail to define a constructor, JavaScript provides a default one. It's emblematic of a blank recipe card waiting for your custom creation!

Constructors in JavaScript

Constructors are defined using the keyword constructor inside a class. They may accept parameters that help initialize object attributes. This is akin to a recipe specifying which ingredients are needed and the quantity of each. Here's an example of a constructor within a class:

class Car {
  // This is our constructor with three parameters
  constructor(brand, model, color) {
    this.brand = brand;  // assigning parameter 'brand' to the object property 'brand'
    this.model = model;  // 'model' to 'model'
    this.color = color;  // 'color' to 'color'
    console.log(`Instantiated a Car instance with brand=${brand}, model=${model}, color=${color}`);
  }
}

Our Car class constructor accepts three parameters. Each time we create a new Car object, we supply these attributes.

Creating Objects Using Constructors

Now, let's create our first Car object using the new keyword:

let myCar = new Car("Toyota", "Corolla", "red");
// Prints a message from constructor:
// Instantiated a Car instance with brand=Toyota, model=Corolla, color=red

myCar is a Car object, representing a red Toyota Corolla. It derives its attributes from the constructor which we defined!

Special Properties of Constructors

Despite a JavaScript class having the capability to house many methods, it comes with a limiting condition — it can accommodate only one constructor. If we declare more than one constructor, JavaScript will throw a SyntaxError.

In cases where no explicit constructor is defined, JavaScript supplements with a default one: constructor() {}.

We can assign default values to parameters in the case where we overlook their inclusion during object creation:

class Car {
  // 'color' has a default value of "white"
  constructor(brand, model, color = "white") {
    this.brand = brand;
    this.model = model;
    this.color = color;
  }
}
Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal