0


原型和原型链的讲解

一,原型

**①所有引用类型都有一个

__proto__(隐式原型)

属性,属性值是一个普通的对象
②搜有函数都有一个

prototype(原型)

属性,属性值是一个普通的对象
③所有引用类型的

__proto__属性指向

构造函数的prototype

**

每一个javascript对象创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。

原型的用途:

1.构造函数(Person)通过prototype访问原型对象存放公共方法

2.实例对象p访问原型对象_proto_存放公共对象

3.constructor构造方法(原型对象创建的构造函数)

代码:

<!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>    
</body>
<script>
    //  所有函数都有原型对象
    //  构造函数访问原型对象  prototype  --- 存放公共方法
    //  实例对象访问原型对象  __proto__  --- 存放公共方法
    //  constructor  构造方法(原型对象创建的构造函数)
    
    //  构造函数
    function Person(name,age,sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    //在构造函数的原型上添加公共方法
    Person.prototype.money = function(){
        //  原型对象中的 this 指向 调用他的实例对象
        console.log(this.name+"---这是原型对象上的挣钱方法"+this.age);
    }
    let p = new Person("猿究院",18,"男");  //实例对象
    let p1 = new Person("html",20,"nv");  //实例对象
    console.log(p,p1);
    p.money();
    p1.money();
    Object.prototype.phone = "222222222222";
    Person.prototype.phone = "1111111111";
    p.phone = "333333333";
    console.log(p.phone);
</script>
</html>

二,原型链

**

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么假如我们让原型对象等于另一个类型的实例,结果会怎样?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。这就是所谓的原型链的基本概念

**

** 》》》**

**①一直往上层查找,直到到null还没有找到,则返回

undefined

Object.prototype.__proto__ === null

③所有从原型或更高级原型中的得到、执行的方法,其中的this在执行时,指向当前这个触发事件执行的对象**

标签: 原型模式

本文转载自: https://blog.csdn.net/qq_61854038/article/details/126334192
版权归原作者 来康二锅头 所有, 如有侵权,请联系我们删除。

“原型和原型链的讲解”的评论:

还没有评论