JavaScript—原型和原型链

113 阅读1分钟

一、什么是原型(prototype)?

  • 创建的函数中都会有原型属性,这个属性是一个指针,指向一个对象(原型对象),原型对象里面包含由特定类型的所有实例共有的属性和方法;

二、什么是原型链?

1. 原型链第一层

  • 新创建一个函数就会根据规则给这个函数创建一个原型属性,指向函数的原型对象;
  • 原型对象里面会自动添加一个constructor属性,这个属性里面包含一个指回prototype属性所在的函数的指针,即constructor属性会指回原函数;
  • 通过这个函数(new)创建的实例有一个__proto__指向构造函数的原型对象。 image.png

2. 整个原型链

  • 原型链描述的是实例与原型的关系
  • 如上所述,这个构造函数的原型对象又是另一个类型的实例,有__proto__指针指向自己的原型对象,这个原型对象同样也有自己的构造函数,通过prototype和constructor彼此连接,以此类推,直到最后一层为null

三、相关问题

1. instanceof

2. 继承

image.png