首先,要明确几个点:函数
方法这个特殊的对象,除了和其余对象同样有上述_proto_属性以外,还有本身特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象的用途就是包含全部实例共享的属性和方法(咱们把这个对象叫作原型对象)。原型对象也有一个属性,叫作constructor,这个属性包含了一个指针,指回原构造函数。
好啦,知道了这两个基本点,咱们来看看上面这副图。spa
另外:构造函数Foo()除了是方法,也是对象啊,它也有__proto__属性,指向谁呢?指向它的构造函数的原型对象呗。函数的构造函数不就是Function嘛,所以这里的__proto__指向了Function.prototype。
其实除了Foo(),Function(), Object()也是同样的道理。
原型对象也是对象啊,它的__proto__属性,又指向谁呢?
同理,指向它的构造函数的原型对象呗。这里是Object.prototype.
最后,Object.prototype的__proto__属性指向null。prototype