关于"原型","原型链"的理解?

原型:每一个构造函数都有一个prototype属性指向一个对象,这个对象就是构造函数实例的原型

原型链:每一个实例都有一个__proto__属性执行原型对象,来获取原型对象上的属性和方法,原型对象也有一个__proto__

   属性指向另外一个原型对象,以此类推,直到原型链的最终端null为止,这个串成链的过程就是原型链

特点:实现继承 一个对象可以拿到另一个对象上的属性和方法

     构造函数都有一个prototype属性指向原型对象

     原型对象都有一个consttuctor属性指向构造函数

     构造函数new实例化实例对象

     实例对象上有__proto__属性指向原型

 

验证原型链代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //  构造函数     实例对象   原型对象
        // 1.创建构造函数
        function  Person(){}
        // 2.实例化对象
        var  gd = new Person();
        // console.log(gd)

        // 3.直接打印person原型对象
         console.dir(Person)
         console.dir(Person.prototype)
        // 在person.prototype上也存在__proto__;
        // 说明:  原型对象也是另外一个构造函数通过new实例化得到的

        // 验证:  Object 是不是Person.prototype的构造函数
         console.log(Person.prototype.__proto__.constructor === Object); // ture
         console.log(Person.prototype.__proto__ === Object.prototype); // true

        // 验证原型链之间的关系是否存在
        console.log(Object.prototype);
        console.log(Person.prototype.toString());
        console.log(gd.toString());
    </script>
</body>
</html>

 

 

关于原型链的逻辑图:

 

posted @ 2022-07-08 22:45  又又儿  阅读(52)  评论(0)    收藏  举报