原型和原型链都是来源于对象而服务于对象的概念,所以要先明确一点:
JavaScript中一切引用类型都是对象,对象就是属性的集合。
Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。
原型链的构成
由三类元素构成:
- 实例对象
- 构造函数
- 原型对象prototype
原型链的联系
__proto__- prototype
- constructor
- new
等途径互相联系,其中__proto__为隐式联系,自动调用
原型链的作用
JS 通过 原型和原型链实现对象属性的继承,代码的复用。
原型链图

- 自动调用的__proto__是代码复用的关键
- prototype用于通过构造函数向原型添加公用代码
- constructor常用于判断类型
知识点总结
- 引用类型都是对象,每个对象都有原型对象。
- 对象都是由构造函数创建,对象的__proto__属性指向其原型对象,构造函数的prototype属性指向其创建的对象实例的原型对象,所以对象的__proto__属性等于创建它的构造函数的prototype属性。
- 所有通过字面量表示法创建的普通对象的构造函数为Object
- 所有原型对象都是普通对象,构造函数为Object
- 所有函数的构造函数是Function
- Object.prototype没有原型对象
作者:Logan70 链接:juejin.cn/post/684490…
参考文章