无敌原型链(很长版)

60 阅读1分钟

废话不多说,直接上代码!

<script>
        function Person(){}
        const p = new Person();
        //p 就是 Person 实例对象
        console.log(p.__proto__ === Person.prototype);
        /* 
            构造函数Function实例对象
            构造函数的显示原型(prototype),指向原型对象
            实例对象的隐式原型(__proto__),指向原型对象
        */
        console.log(Person.prototype);
        console.log(p.__proto__);
        console.log(Person.prototype === p.__proto__);
        //Person的原型对象也是一个对象,也有一个属性(__proto__)
        console.log(Person.prototype.__proto__);
        //Object的原型对象,还是有一个属性 __proto__
        console.log(Person.prototype.__proto__.__proto__);
        //Object的原型对象
        console.log(Person.prototype.__proto__ === Object.prototype);
        //自定义构造函数 也是 Function的实例对象
        console.log(Person.__proto__ === Function.prototype);
        //Object 也是 Function 的实例对象
        console.log(Object.__proto__ === Function.prototype);
        //Function 也是 Function 的实例对象
        console.log(Function.__proto__ === Function.prototype);
        //Function的原型对象
        console.log(Function.prototype);
        console.log(Function.prototype.constructor);
        //Function的原型对象也是对象 __proto__
        console.log(Function.prototype.__proto__);
    </script>

再上一波测试结果图

image.png 为了让大家看懂,画个图来看看

image.png