new 语义:运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一
new步骤
模拟new操作前,要先知道new操作是发生了什么,就拿new Object()
举例:
- 创建一个新对象
- 把新对象的原型指向构造函数的prototype
- 把构造函数里的this指向新对象
- 返回这个新对象
function _new(Fn, ...arg) { const obj = Object.create(Fn.prototype); const obj1 = Fn.apply(obj, arg); return obj1 instanceof Object ? obj1 : obj; }