- 每一个构造函数都有prototype指向当前构造函数的原型对象
- 每一个实例对象都有__proto__,指向当前实例对象构造函数的原型对象prototype
- 原型对象也是对象也有__proto__属性,指向原型对象构造函数的原型对象即Object.prototype
- 原型对象的constructor属性指向的是当前原型对象的构造函数
即Object.prototype.constructor = Object - 通过构造函数创建对象,构造函数本身也是一个对象
可以简单理解为:
函数有prototype属性,指向构造函数的原型对象
对象有__proto__属性,指向构造函数的原型对象
const foo = new Foo() //foo实例对象 Foo构造函数
const Foo = new Function() //Foo实例对象 Function构造函数
const Function = new Function() //Function实例对象 Function构造函数
const o = new Object() //o实例对象 Object构造函数
const Object = new Function() //Object实例对象 Function构造函数
形成的原型链图: