The Object.isPrototypeOf()
method checks if an object exists in another object's prototype chain.
Example
let obj = new Object();
// check if prototype of obj is same as
// prototype of Object data type
console.log(Object.prototype.isPrototypeOf(obj));
// Output: true
isPrototypeOf() syntax
The syntax of the isPrototypeOf()
method is:
prototypeObj.isPrototypeOf(obj)
Here, prototypeObj refers to the object against which we want to compare our selected object's (obj) prototype.
Since isPrototypeOf()
is a static method, we need to access the method using the class name, Object
.
isPrototypeOf() Parameters
The isPrototypeOf()
method takes in:
- obj - the object whose prototype chain will be checked
isPrototypeOf() Return Value
The isPrototype()
method returns:
true
- if prototypeObj is the prototype of objfalse
- if prototypeObj is not the prototype of obj, or if obj is not an object itself
Note: isPrototypeOf()
differs from the instanceof
operator as it checks the obj prototype chain against prototypeObj not prototypeObj.prototype
.
Example 1: JavaScript Object.isPrototypeOf()
// create a new instance of Object
let obj = new Object();
// check the prototype of obj
// against Object.prototype
console.log(Object.prototype.isPrototypeOf(obj));
// Output: true
// check the prototype of the toString method
// against Function.prototype
console.log(Function.prototype.isPrototypeOf(obj.toString));
// Output: true
// check the prototype of [2, 4, 8] array
// against Array.prototype
console.log(Array.prototype.isPrototypeOf([2, 4, 8]));
// Output: true
In the above example, we have used the isPrototype()
method to check the prototypes of:
- obj - an object
obj.toString
- a function that returns a string representation of obj[2, 4, 8]
- an array of integers
Since Object.prototype
is the root prototype of all objects, we get true
as an output while checking Object.prototype
against obj.
Similarly,
Function.prototype
is the prototype of all functions, which includesobj.toString
.Function.prototype
is the prototype of all arrays, including[2, 4, 8]
.
Example 2: isPrototypeOf() With a Custom Object
// define an object
let Animal = {
makeSound() {
console.log(`${this.name}, ${this.sound}!`);
},
};
// function to create a new object
function Dog(name) {
this.name = name;
this.sound = "bark";
// set prototype using setPrototypeOf()
Object.setPrototypeOf(this, Animal);
}
// create a new object
const dog1 = new Dog("Marcus");
// check the prototype of dog1 against Animal object
console.log(Animal.isPrototypeOf(dog1));
// Output: true
In the above example, we have created two objects: Animal and dog1. Notice that the dog1 object has been created using the Dog()
constructor function.
Using the setPrototypeOf()
method, we have set the prototype of all the objects created from the Dog()
constructor function to that of Animal.
Hence, we get true
as an output while checking whether the Animal
object is a prototype of dog1.
Recommended Reading: