前言
总结一下JS原型链相关的一些知识。大致分为以下内容
栗子🌰
Person = funciton(){}
p = new Person()
1. 原型prototype、隐式原型__proto__、constructor之间的关系
- 实例对象的隐式原型等于其创建它的构造函数的原型
- 构造函数的原型对象的constructor指向该构造函数
Person.prototype.constructor === Person
p.__proto__ === Person.prototype
2. 何为原型链
- 实例对象通过__proto__一路向上找,只到找到null所形成的链条称为原型链 p --> Person.prototype --> Object.Prototype --> null
Person --> Function.prototype --> Object.Prototype --> null
3. 原型链的终点
原型链的的终点均为null,次终点为Object.prototype。可以理解为Object.prototype创造了js的一切
完整原型链图
4. Object的特殊性
- Object的原型是原型链的次终点
- Object构造函数是由Function创建的
Object.__proto__.constructor === Function
Object.__proto__ === Function.prototype
5. Function的特殊性
- Function是Function自己创建的
Function.__proto__.constructor === Function
Function.__proto__ === Function.prototype
- Function的原型是由Object的原型创建的
Function.prototype.__proto__ === Object.prototype
- Funtion的原型创建了诸多构造函数(Object、Funtion、String、Array、Number)