一、
1、Foo是一个函数,那么它会有一个显示原型对象:Foo.prototype
Foo.prototype来自哪里
答案:创建了一个函数,Foo.prototype={constructor:Foo}
2、Foo是一个对象,那么它会有一个隐式原型对象:Foo.__proto__
Foo.__proto__来自哪里
答案:new Function() Foo.__proto__=Function.prototype
Function.prototype={constructor:Foo}
二、
1、函数:显示原型(prototype,指向自己的原型对象)和隐式原型(__proto__,找老大,就是new出来后面的那个)
2、对象:隐式原型(__proto__,找老大,就是new出来后面的那个)
三、总结:
1.prototype指向自己的原型对象
2.__proto__指向老大的原型对象
(1)function Foo()的老大:Function帮忙new出来的
(2)const obj={} 的老大:Object帮忙new 出来的
(3)let stu=new Student()的老大:Student帮忙new出来的