原型链
# 原型链
# 概念
构造函数、实例对象、构造函数的原型对象、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.prototypeObject原型对象的原型对象为null,即:
Object.prototype.__proto__ === null
上次更新: 2020/12/06, 21:12:00
桂ICP备19012079号-1