Constructor functions help you create many similar objects easily. They set up new objects with properties and values.
Constructor functions in Javascript
function ConstructorName(parameter1, parameter2) { this.property1 = parameter1; this.property2 = parameter2; // more properties or methods }
The function name usually starts with a capital letter to show it is a constructor.
Use the new keyword to create a new object from the constructor.
function Person(name, age) { this.name = name; this.age = age; }
const person1 = new Person('Alice', 30); const person2 = new Person('Bob', 25);
honk to each Car object.function Car(make, model) { this.make = make; this.model = model; this.honk = function() { console.log('Beep beep!'); }; }
This program creates two dogs with names and breeds. Each dog can bark, printing a message with its name.
function Dog(name, breed) { this.name = name; this.breed = breed; this.bark = function() { console.log(this.name + ' says Woof!'); }; } const dog1 = new Dog('Buddy', 'Golden Retriever'); const dog2 = new Dog('Max', 'Beagle'); dog1.bark(); dog2.bark();
Always use new when calling a constructor function to create a new object.
Inside the constructor, this refers to the new object being created.
Methods defined inside the constructor are created for each object separately. To save memory, use prototypes for shared methods.
Constructor functions help create many similar objects easily.
Use new to make a new object from a constructor.
this inside the constructor means the new object being made.
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
