JavaScript - isPrototypeOf() method

revision:


Category : object

The isPrototypeOf() method checks if an object exists in another object's prototype chain..

Note: "isPrototypeOf()"" differs from the "instanceof" operator. In the expression "object instanceof AFunction", object's prototype chain is checked against "AFunction.prototype", not against "AFunction" itself.

Syntax :

        isPrototypeOf(object)
    

Parameters:

object : required. The object whose prototype chain will be searched.

Examples:

        function Foo() {}
        function Bar() {}
        Bar.prototype = Object.create(Foo.prototype);
        const bar = new Bar();
        console.log(Foo.prototype.isPrototypeOf(bar));
        // Expected output: true
        console.log(Bar.prototype.isPrototypeOf(bar));
        // Expected output: true
    

Practical examples

example: using the isPrototypeOf() method.

code:
                    <div>
                        <p id="proto-1"></p>
                        <p id="proto-2"></p>
                        <p id="proto-3"></p>
                        <p id="proto-4"></p>
                        <p id="proto-5"></p>
                        <p id="proto-6"></p>
                        <p id="proto-7"></p>
                        <p id="proto-8"></p>
                    </div>
                    <script>
                        class Foo {}
                        class Bar extends Foo {}
                        class Baz extends Bar {}
            
                        const foo = new Foo();
                        const bar = new Bar();
                        const baz = new Baz();
            
                        // prototype chains:
                        // foo: Foo --> Object
                        // bar: Bar --> Foo --> Object
                        // baz: Baz --> Bar --> Foo --> Object
                        console.log(Baz.prototype.isPrototypeOf(baz)); // true
                        document.getElementById("proto-1").innerHTML = "is prototype ? : " + Baz.prototype.isPrototypeOf(baz);
                        console.log(Baz.prototype.isPrototypeOf(bar)); // false
                        document.getElementById("proto-2").innerHTML = "is prototype ? : " + Baz.prototype.isPrototypeOf(bar);
                        console.log(Baz.prototype.isPrototypeOf(foo)); // false
                        document.getElementById("proto-3").innerHTML = "is prototype ? : " + Baz.prototype.isPrototypeOf(foo);
                        console.log(Bar.prototype.isPrototypeOf(baz)); // true
                        document.getElementById("proto-4").innerHTML = "is prototype ? : " + Bar.prototype.isPrototypeOf(baz);
                        console.log(Bar.prototype.isPrototypeOf(foo)); // false
                        document.getElementById("proto-5").innerHTML = "is prototype ? : " + Bar.prototype.isPrototypeOf(foo);
                        console.log(Foo.prototype.isPrototypeOf(baz)); // true
                        document.getElementById("proto-6").innerHTML = "is prototype ? : " + Foo.prototype.isPrototypeOf(baz);
                        console.log(Foo.prototype.isPrototypeOf(bar)); // true
                        document.getElementById("proto-7").innerHTML = "is prototype ? : " + Foo.prototype.isPrototypeOf(bar);
                        console.log(Object.prototype.isPrototypeOf(baz)); // true
                        document.getElementById("proto-8").innerHTML = "is prototype ? : " + Object.prototype.isPrototypeOf(baz);
                    </script>
                

example: basic use of the JavaScript Object.prototype.isPrototypeOf() method.

code:
                    <div>
                        <p id="proto-9"></p>
                        <p id="proto-10"></p>
                        <p id="proto-11"></p>
                    </div>
                    <script>
                        function obj1() { }
                        function obj2() { }
                        
                        obj1.prototype = Object.create(obj2.prototype);
                        const obj3 = new obj1();
                        console.log(obj1.prototype.isPrototypeOf(obj3));
                        console.log(obj2.prototype.isPrototypeOf(obj3));
                        document.getElementById("proto-9").innerHTML = "is prototype ? : " + obj1.prototype.isPrototypeOf(obj3);
                        document.getElementById("proto-10").innerHTML = "is prototype ? : " + obj2.prototype.isPrototypeOf(obj3);
                    </script>