普通函数执行 形成全新的执行上下文EC 形成AO变量对象 初始化arguments变量对象 形参赋值 声明this的指向 初始化作用域链ScopeChain 代码执行 new 函数执行 形成全新的执行上下文EC 形成AO变量对象 初始化arguments变量对象 形参赋值 声明this的指向 初始化作用域链ScopeclChain [new] 创建实例对象,当前构造函数的实例 [new] 声明this的指向,指向新创建的实例 代码执行 [new] return 的值 如果构造函数没有写return或者return的是基本类型值,那么return 新创建的实例 如果构造函数return的是引用类型值,那么return这个引用类型值 模拟new执行构造函数 function _new (func,...args) { let obj = Object.create(func.prototype) let result = func.call(obj,...args) if (result !== null && typeOf result === "object" || typeOf result === "function") { return result } return obj }