原型与原型链

151 阅读1分钟

原型和原型链都是来源于对象而服务于对象的概念,所以要先明确一点:

JavaScript中一切引用类型都是对象,对象就是属性的集合。

Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。

原型链的构成

由三类元素构成:

  1. 实例对象
  2. 构造函数
  3. 原型对象prototype

原型链的联系

  1. __proto__
  2. prototype
  3. constructor
  4. new

等途径互相联系,其中__proto__为隐式联系,自动调用

原型链的作用

JS 通过 原型和原型链实现对象属性的继承,代码的复用。

原型链图

  1. 自动调用的__proto__是代码复用的关键
  2. prototype用于通过构造函数向原型添加公用代码
  3. constructor常用于判断类型

知识点总结

  1. 引用类型都是对象,每个对象都有原型对象。
  2. 对象都是由构造函数创建,对象的__proto__属性指向其原型对象,构造函数的prototype属性指向其创建的对象实例的原型对象,所以对象的__proto__属性等于创建它的构造函数的prototype属性。
  3. 所有通过字面量表示法创建的普通对象的构造函数为Object
  4. 所有原型对象都是普通对象,构造函数为Object
  5. 所有函数的构造函数是Function
  6. Object.prototype没有原型对象

作者:Logan70 链接:juejin.cn/post/684490…

参考文章

深入JavaScript系列(六):原型与原型链