原型链
# 原型链
# 概念
构造函数、实例对象、构造函数的原型对象、Object构造函数、Object原型对象、null
构造函数和实例对象
- 通过构造函数创建实例对象
构造函数和构造函数的原型对象
- 构造函数里面具有该构造函数的原型对象
prototype
- 构造函数的原型对象的
constructor
指向了构造函数
- 构造函数里面具有该构造函数的原型对象
实例对象和构造函数的原型对象
- 实例对象中的
__proto__
指向了它的构造函数的原型对象prototype
,即:p.__proto__ === Person.prototype
- 实例对象中的
构造函数的原型对象和Object原型对象
- 构造函数的原型对象
Person.prototype
里面有__proto__
属性,说明原型对象也是一个对象,说明是被某个构造函数实例化出来的,这个构造函数就是Object构造函数,所以构造函数的原型对象的__proto__
(注意,不是构造函数的__proto__
) 指向Object构造函数的原型对象prototype
,即:Person.prototype.__proto__ === Object.prototype
- 构造函数的原型对象
Object原型对象和null
- Object原型对象也是个对象,但是里面没有
__proto__
属性,所以Object.prototypr.__proto__ === null
,即Object原型对象的__proto__
指向了null
- Object原型对象也是个对象,但是里面没有
总结:
实例对象的原型对象等于其构造函数的原型对象,即:
p.__proto__ === Person.prototype
构造函数的原型对象的原型对象等于Object构造函数的原型对象,即:
Person.prototype.__proto__ === Object.prototype
实例对象的原型对象的原型对象等于Object构造函数的原型对象,即:
p.__proto__.__proto__ === Object.prototype
Object原型对象的原型对象为null,即:
Object.prototype.__proto__ === null
上次更新: 2020/12/06, 21:12:00