首先转载一张图(转自:https://www.cnblogs.com/lml-lml/p/6880757.html):
实例对象拥有__proto__和constructor属性,前者指向构造函数的原型,后者指向构造函数;
构造函数与普通函数不一样,多拥有一个prototype属性,指向它的prototype原型;__proto__属性指向构造函数的对象类型(先是Function类型,往上是Object类型);constructor指向它自己的构造函数;
原型里面有构造器construction和__proto__,构造器指向原型所属的构造函数,__proto__指向Object,为{}。Object的__proto__指向null。
可得出的结论是:
1. 所有函数都是Function的实例;
2. prototype是属性同时也是Object的实例对象,通过原型链能上升到Object