问题:JS 中 Function 和 Object 的继承关系?
回答:如下图所示
理解:
function Foo () {}
let foo = new Foo();
let obj = {show: function (){}};
1 new 产生的 function/object 无 prototype
foo.__proto__ === Foo.prototype; // true
foo.prototype; // undefined
2 所有 function/object 的构造函数都继承于 Function.prototype
Foo.__proto__ === Function.prototype; // true
obj.show.__proto__ === Function.prototype; // true
Object.__proto__ === Function.prototype; // true
3 所有原型对象都继承于 Object.prototype,除了 Object.prototype 本身
Foo.prototype.__proto__ === Object.prototype; // true
obj.show.prototype.__proto__ === Object.prototype; // true
Function.prototype.__proto__ === Object.prototype; // true
Object.prototype.__proto__ === null; // true