JS原型与原型链的理解

首先放图


tu.png

原型

  • 无论什么,只要创建了一个新函数就会根据一组特定的规则为该函数创建一个Prototype属性,这个属性指向的函数的原型对象
函数fn的prototype指向该函数的原型对象

原型对象

  • 所有的原型对象都会自动的获得一个constructor属性,它默认指向prototype属性所在的函数.
fn.prototype.constructor指向构造函数自己

实例

  • 构造函数通过new关键字创建了一个实例, 实例有个属性__proto__指向了原型对象.
    实例的__proto__属性指向构造函数的原型对象

简单总结:每个构造函数都有一个原型对象,每个原型兑现都有一个指针指向构造函数,每个实例都有一个指向原型对象内部的指针


原型链

  • 原型链是实现对象继承的主要方法
  • 基本思想: 利用原型让一个引用类型去继承另外一个引用类型的属性和方法.
  • 如果我们让原型对象等于另外一个类型的实例,那么此时的原型对象必然也包含一个指向另一个原型对象的指针,假如另一个原型对象又是另一个类型的实例,那么上述的关系是依然存在的,这样就形成了原型链~
  • 原型链的顶端是Object.__proto__

推荐阅读更多精彩内容