Function 是最顶层的构造器,它构造了系统中所有的对象,包括用户自定义对象,系统内置对象,甚至包括它自已;所有的函数对象是被 Function 这个函数对象构造出来的,都是 Function 的实例;
// 创建用户自定义对象
function func() {} // 函数声明
let func = function () {} // 函数表达式
let func = new Function() // Function 构造器
func.constructor === Function
// 系统内置对象
Object.constructor // Function() { [native code] }
Number.constructor
String.constructor
// Function 自身
Function = new Function()
Function.constructor === Function
Function.__proto__ === Function.prototype // new 运算符发生的事情
Object 是最顶层的对象,所有的对象都将继承 Object 的原型;Object 也是由 Function 构造出来的;
let obj = {}
obj.__proto__ === Object.prototype // true
var Foo= function(){}
Foo.prototype.__proto__ === Object.prototype // true
Function 和 Object的关系
js中面向对象编程是基于构造函数(constructor)和原型链(prototype)的;
Function 是最顶层的构造器,Object 是最顶层的对象;
Function 是最顶层的构造器,它构造了系统中所有的对象,包括用户自定义对象,系统内置对象,甚至包括它自已;所有的函数对象是被 Function 这个函数对象构造出来的,都是 Function 的实例;
Object 是最顶层的对象,所有的对象都将继承 Object 的原型;Object 也是由 Function 构造出来的;
Object对象直接继承自Function对象,一切对象(包括Function对象)直接继承或最终继承自Object对象。
Function 创建了自己;
Function 创建了Object;
然后所有对象又继承 Object 的原型;
做个题试试