What if you could create many objects with just one simple function instead of repeating yourself endlessly?
Why Constructor functions in Javascript? - Purpose & Use Cases
Imagine you want to create many similar objects, like multiple users in a game, each with their own name and score. You write the same code again and again for each user, copying and changing values manually.
This manual way is slow and boring. It's easy to make mistakes, like forgetting to change a name or score. If you want to change how users are created, you must fix every copy of the code, which wastes time and causes bugs.
Constructor functions let you write one blueprint to create many objects quickly and correctly. You just call the constructor with different details, and it builds each object for you, saving time and avoiding errors.
const user1 = {name: 'Alice', score: 10};
const user2 = {name: 'Bob', score: 15};function User(name, score) {
this.name = name;
this.score = score;
}
const user1 = new User('Alice', 10);
const user2 = new User('Bob', 15);You can create many objects easily and keep your code clean and easy to update.
Think of a constructor function like a cookie cutter: you make one shape, then press it many times to get many cookies that look the same but can have different toppings.
Manual object creation is repetitive and error-prone.
Constructor functions provide a reusable blueprint for objects.
They make code easier to write, read, and maintain.
Practice
new keyword do when used with a constructor function in JavaScript?Solution
Step 1: Understand the role of
Thenewnewkeyword creates a fresh object and setsthisinside the constructor to that object.Step 2: Effect on constructor function
It allows the constructor to initialize properties on the new object and then returns it automatically.Final Answer:
Creates a new object and setsthisto that object inside the constructor -> Option AQuick Check:
newcreates object = A [OK]
new makes a new object and sets this [OK]- Thinking
newjust calls the function without creating an object - Believing
newreturns a string - Confusing
newwith deleting functions
Car?Solution
Step 1: Identify valid constructor function syntax
A constructor function is a normal function with a capitalized name, likefunction Car() {}.Step 2: Check each option
function Car() { this.make = 'Toyota'; } uses correct function syntax. var Car = () => { this.make = 'Toyota'; } uses arrow function which does not bindthisproperly. class Car { make = 'Toyota'; } is a class, not a constructor function. function Car[] { this.make = 'Toyota'; } has invalid syntax with square brackets.Final Answer:
function Car() { this.make = 'Toyota'; } -> Option AQuick Check:
Constructor function = normal function with capital name [OK]
- Using arrow functions as constructors
- Trying to use class syntax instead of function
- Writing invalid function syntax with brackets
function Person(name) {
this.name = name;
}
const p = new Person('Alice');
console.log(p.name);Solution
Step 1: Understand object creation with constructor
Thenew Person('Alice')creates a new object and setsthis.nameto 'Alice'.Step 2: Access the property
Loggingp.nameprints the value assigned, which is 'Alice'.Final Answer:
Alice -> Option CQuick Check:
Property set by constructor = 'Alice' [OK]
this.name sets property on new object [OK]- Expecting undefined because of missing return
- Confusing constructor name with property value
- Thinking
console.logprints function name
function Animal(type) {
type = type;
this.type = type;
}
const a = new Animal('Dog');
console.log(a.type);Solution
Step 1: Analyze the assignment
This line assigns the parametertype = type;typeto itself, which does nothing and is unnecessary.Step 2: Check other parts
The linethis.type = type;correctly assigns the parameter to the object property. Thenewkeyword is used correctly. Function name capitalization is fine.Final Answer:
The assignmenttype = type;does nothing and is redundant -> Option DQuick Check:
Redundant self-assignment = B [OK]
- Thinking
type = type;sets object property - Forgetting to use
newkeyword - Believing constructor names must be lowercase
Book that takes title and author as parameters and adds a method describe that returns a string like "Title by Author". Which code correctly does this?Solution
Step 1: Check method definition inside constructor
function Book(title, author) { this.title = title; this.author = author; this.describe = function() { return `${this.title} by ${this.author}`; }; } correctly definesdescribeas a function property onthis, so each object has its own method.Step 2: Analyze other options
function Book(title, author) { this.title = title; this.author = author; } Book.describe = function() { return `${this.title} by ${this.author}`; }; addsdescribeto the constructor function itself, not instances. function Book(title, author) { this.title = title; this.author = author; describe() { return `${this.title} by ${this.author}`; } } has invalid syntax for method inside function. function Book(title, author) { this.title = title; this.author = author; this.describe = `${this.title} by ${this.author}`; } assigns a string, not a function, sodescribeis not callable.Final Answer:
function Book(title, author) { this.title = title; this.author = author; this.describe = function() { return `${this.title} by ${this.author}`; }; } -> Option BQuick Check:
Method as function property onthis= A [OK]
this inside constructor [OK]- Adding methods to constructor function instead of instances
- Using invalid syntax for methods inside functions
- Assigning method as string instead of function
Ready to prove it?
Pass the test and this pattern moves unknown
