Published December 30, 2023 by

Constructor Functions in JavaScript

In JavaScript, a constructor function is a special function that is used to create and initialize objects. Constructor functions are typically used in conjunction with the new keyword to instantiate new objects. When a constructor function is called with new, it creates a new object and sets the this keyword to refer to that new object. This allows the constructor to initialize the properties of the new object.

Here's a detailed explanation with examples:

Basic Constructor Function:

// Constructor function function Person(name, age) { // Properties this.name = name; this.age = age; // Method (function inside the constructor) this.sayHello = function() { console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`); }; } // Creating objects using the constructor function const person1 = new Person('John', 30); const person2 = new Person('Jane', 25); // Accessing properties and calling methods console.log(person1.name); // Output: John console.log(person2.age); // Output: 25 person1.sayHello(); // Output: Hello, my name is John and I am 30 years old. person2.sayHello(); // Output: Hello, my name is Jane and I am 25 years old.

In this example, the Person function acts as a constructor. It takes two parameters (name and age) and assigns them as properties to the newly created object using this. It also defines a method sayHello within the constructor.

Prototype-based Constructor Function:

To optimize memory usage and avoid redundancy in methods, it's common to use the prototype property to define shared methods:

function Person(name, age) {
    this.name = name;
    this.age = age;
}
// Method added to the prototype
Person.prototype.sayHello = function() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};
const person1 = new Person('John'30);
const person2 = new Person('Jane'25);
person1.
sayHello(); // Output: Hello, my name is John and I am 30 years old.
person2.
sayHello(); // Output: Hello, my name is Jane and I am 25 years old.

Here, the sayHello method is added to the prototype of the Person constructor. This way, the method is shared among all instances of Person, saving memory.

Using constructor functions is a common pattern in JavaScript, especially when you need to create multiple objects with similar properties and methods. However, with the introduction of ES6 classes, there's an alternative syntax for achieving the same result.


While both constructor functions and objects are key concepts in JavaScript, they serve different purposes.

Constructor Function:

  1. Blueprint for Objects:

    • A constructor function serves as a blueprint for creating objects. It defines the structure and behavior of objects of a certain type.
    • It allows you to create multiple instances of objects with similar properties and methods.
  2. Initialization:

    • Constructor functions typically initialize the properties of objects using the this keyword.
    • They are often used in conjunction with the new keyword to create new instances of objects.
  3. Example:

    funnction Person(name, age) { this.name = name; this.age = age; } const person1 = new Person('John'30);

Object Literal:

  1. Direct Object Creation:

    • Objects can be created directly using object literals {} without the need for a constructor function.
    • Object literals allow you to create single instances of objects without a blueprint.
  2. Example:

    const person = { name'John'age30, };

Key Differences:

  1. Blueprint vs. Single Instance:

    • Constructor functions provide a blueprint for creating multiple instances of objects with shared structure and behavior.
    • Object literals are suitable for creating single instances without the need for a constructor.
  2. Initialization:

    • Constructor functions are often used to initialize object properties using parameters passed to the constructor.
    • Object literals initialize properties directly within the literal itself.
  3. Usage of new:

    • Constructor functions are typically called with the new keyword to create instances of objects.
    • Object literals do not involve the use of new; they are created directly.
  4. Shared Methods:

    • Constructor functions can define methods that are shared among all instances by adding them to the prototype.
    • Object literals can have methods, but they are not automatically shared among other objects of the same type.

In summary, constructor functions are used when you need to create multiple instances of objects with shared properties and methods. Object literals are used for creating single, standalone objects. Each has its own use case depending on the requirements of your code. Additionally, with the introduction of ES6 classes, there is an alternative syntax for creating constructor-like structures using the class keyword.