复习一下原型链

96 阅读2分钟

前言: 每一个对象都有自己的原型, 而原型也是对象,也会有自己的原型,此次类推形成链式结构。称之为原型链。(原型链的终点是null)

微信图片_20220428212623.png

1.原型对象

  1. 提到原型链我们就不得不提一下原型对象
  •  1.原型对象是什么? :  任何函数在声明的时候,系统会自动帮你创建一个对象,称之为原型对象
    
  •  2.原型对象作用? : 解决  内存浪费 + 变量污染
    
  •  3.原型对象相关三个属性:
    
                           prototype :  属于构造函数, 指向原型对象
                           __proto__ :  属于实例对象,指向原型对象
                           constructor : 属于原型对象,指向构造函数
    
  •  4.图例:         
                           
    

.png

  •  5.代码: 
        console.log( p1.__proto__.constructor )//Person
        console.log( Person.prototype === p1.__proto__ )//true
    

2.原型链的意义

  •  1.原型链:每一个实例对象都有自己的原型,而他的原型也是对象,也会有自己的原型,依次类推形成链式结构,所以我们称之为原型链
    
  •  2.实例对象访问原型链规则:就近原则
    
  •    实例对象先访问自己的,没有就找原型的,原型也没有就找原型的原型,一直找到原型链的终点null,如果再找不到,属性则获取undefined,方法则会报错xxx is  not function
    
       对象先访问自己的,自己没有就找原型的,原型没有就找原型的原型,一直到原型链终点null.如果还找不到。  属性则获取undefined, 方法则会报错 xxx is not function
    

3.总结

通过这些大家应该对原型和原型链的关系有了大概的认知。我的认知就是,原型链就是一个过程,原型是原型链这个过程中的一个单位,贯穿整个原型链。