首先,Function是一台机器,所以它的原型对象也是No. 2对象。
其次,Function又是一台制造机器的机器,所以它的模板对象也是No. 2对象。
所以我们得到了Function的一个非常特别的性质:
Function.__proto__ === Function.prototype
世界最终的样子
> String.prototype
[String: '']
> String.prototype.__proto__
{}
图上少了JS几种类型的prototype指向。这里通过代码补充。
案例题
var F = function() {};
Object.prototype.a = function() {};
Function.prototype.b = function(){};
var f = new F();
f能取到a, 取不到b.
> f.__proto__
F {}
> f.__proto__.__proto__
{ a: [Function] }