Back to Web Development
2026-03-076 min read

instanceof (Web Development)

Learn instanceof (Web Development) step by step with clear examples and exercises.

Why This Matters

In web development, understanding the instanceof keyword in JavaScript is crucial for working with complex objects such as custom classes, prototypes, and inheritance. It helps you avoid runtime errors, improve code readability, and make your projects more robust. By learning about instanceof, you will be able to create more sophisticated web applications that are easier to maintain and debug.

Prerequisites

To fully grasp the concept of instanceof in JavaScript, it's essential to have a good understanding of the following topics:

  • Basic JavaScript syntax (variables, data types, operators)
  • Objects and properties in JavaScript
  • Functions and methods in JavaScript
  • Prototypes and inheritance in JavaScript
  • Understanding the new keyword and constructor functions

Core Concept

The instanceof operator checks if an object or variable is an instance of a specific constructor or class. It works by comparing the internal [[Prototype]] property of an object to the prototype of the constructor function. Here's the syntax for using instanceof:

variableName instanceof ConstructorFunction

For example, let's create a simple constructor function for a Person object and use the instanceof operator to check if an object is an instance of that constructor:

function Person(name) {
this.name = name;
}

let person1 = new Person('John Doe');
console.log(person1 instanceof Person); // true

let notAPerson = {};
console.log(notAPerson instanceof Person); // false

In the example above, we create a Person constructor function and instantiate an object called person1. We then use the instanceof operator to check if person1 is an instance of the Person constructor, which returns true. On the other hand, we create an empty object called notAPerson, which is not an instance of the Person constructor, so the instanceof operator returns false.

Understanding Prototypes and Inheritance

When you create a new object using the new keyword, JavaScript automatically sets its internal [[Prototype]] property to the prototype of the constructor function. This allows objects to inherit properties and methods from their prototypes. The instanceof operator takes advantage of this mechanism to determine if an object is an instance of a specific constructor or class.

function Animal(name) {
this.name = name;
}
Animal.prototype.eat = function() {
console.log('Eating...');
};

function Cat(name, breed) {
Animal.call(this, name); // Call the constructor of Animal
this.breed = breed;
}
Cat.prototype = Object.create(Animal.prototype); // Inherit properties and methods from Animal
Cat.prototype.constructor = Cat;

let cat1 = new Cat('Whiskers', 'Siamese');
console.log(cat1 instanceof Cat); // true
console.log(cat1 instanceof Animal); // true

In the example above, we create a Cat constructor that inherits from the Animal constructor. We use the instanceof operator to check if an instance of Cat is also an instance of Animal, which returns true. This demonstrates how the instanceof operator works with inheritance in JavaScript.

Worked Example

Now let's explore a more practical example using inheritance and the instanceof operator. We will create a Vehicle constructor function and define two subclasses: Car and Bike. Then, we will use the instanceof operator to check if an object belongs to the correct class hierarchy.

function Vehicle(model) {
this.model = model;
}
Vehicle.prototype.drive = function() {
console.log('Driving...');
};

function Car(model, brand) {
Vehicle.call(this, model);
this.brand = brand;
}
Car.prototype = Object.create(Vehicle.prototype);
Car.prototype.constructor = Car;

function Bike(model, type) {
Vehicle.call(this, model);
this.type = type;
}
Bike.prototype = Object.create(Vehicle.prototype);
Bike.prototype.constructor = Bike;

let car1 = new Car('Corolla', 'Toyota');
console.log(car1 instanceof Vehicle); // true
console.log(car1 instanceof Car); // true

let bike1 = new Bike('Royal Enfield', 'Cruiser');
console.log(bike1 instanceof Vehicle); // true
console.log(bike1 instanceof Bike); // true

In the example above, we define three constructor functions: Vehicle, Car, and Bike. We use JavaScript's built-in Object.create() method to create prototypes for both subclasses and set their constructors accordingly. Then, we instantiate objects for a car and a bike and use the instanceof operator to check if they belong to the correct class hierarchy.

Common Mistakes

  1. Forgetting to call the constructor function when creating subclasses: When defining subclasses, don't forget to call the superclass constructor using Vehicle.call(this) or super(). This will ensure that the object inherits properties from the superclass.
  2. Comparing objects with === instead of instanceof: The === operator checks for strict equality, which can lead to incorrect results when dealing with objects. Use the instanceof operator to check if an object is an instance of a specific constructor or class.
  3. Not understanding the difference between instanceof and typeof: While both operators are used to check types in JavaScript, they have different use cases. The instanceof operator checks if an object is an instance of a specific constructor or class, while the typeof operator returns the data type (string, number, etc.) of a variable.
  4. Ignoring the importance of prototypes: Understanding how prototypes work in JavaScript is essential for using the instanceof operator effectively. Make sure you're familiar with creating and inheriting from prototypes when working with constructor functions.
  5. Not checking for multiple inheritance: If you're dealing with multiple inheritance, make sure to check if an object is an instance of all relevant constructors or classes using the instanceof operator.

Common Mistakes - Subheadings

  • Forgetting to call superclass constructor
  • Comparing objects with === instead of instanceof
  • Not understanding the difference between instanceof and typeof
  • Ignoring the importance of prototypes
  • Not checking for multiple inheritance

Practice Questions

  1. Create a constructor function for an Animal and define two subclasses: Dog and Cat. Use the instanceof operator to check if objects are instances of the correct classes.
  2. Given the following code, what will be the output of console.log(obj instanceof Animal)?
function Animal(name) {
this.name = name;
}
let obj = new Animal('Lion');
  1. Explain why using the instanceof operator is important when working with complex objects in JavaScript.
  2. What are some common mistakes to avoid when using the instanceof operator?
  3. How can you check if an object is an instance of multiple constructors or classes using the instanceof operator?

FAQ

  1. Can I use instanceof to check if a value is a number, string, or boolean?

No, the instanceof operator is not suitable for checking primitive types like numbers, strings, and booleans. Instead, you can use the typeof operator for this purpose.

  1. Is it possible to create an object that is an instance of multiple constructors or classes?

In JavaScript, an object can only inherit from one constructor or class directly. However, you can achieve a similar effect using mixins and multiple inheritance patterns.

  1. What happens when I use instanceof with built-in JavaScript objects like Array or Date?

You can use the instanceof operator to check if an object is an instance of built-in constructors like Array or Date. For example, let arr = [1, 2, 3]; console.log(arr instanceof Array); // true.

  1. What is the difference between the prototype and __proto__ properties in JavaScript?

The prototype property is a reference to an object that serves as the prototype for an object created with a constructor function. The __proto__ property is an internal, non-standard property that provides access to an object's prototype. Using instanceof with the prototype property is more reliable and recommended.

  1. Why does the instanceof operator return false for some objects created using the new keyword?

The instanceof operator may return false if the object has been manipulated or its prototype chain has been modified in a way that breaks the relationship between the object and its constructor. Make sure to avoid such manipulations when working with constructor functions and the instanceof operator.

instanceof (Web Development) | Web Development | XQA Learn