思路 创建空对象,链接原型到构造函数的显式原型上 执行构造函数,改变this为空对象,保存执行结果 构造函数执行结果是对象就返回该结果;否则返回obj对象 代码123456789function myNew(fn, ...args) { // 创建空对象,链接原型到构造函数的显式原型上,obj对象就可以访问原型上的方法和属性 const obj = Object.create(fn.prototype) // 使用apply执行构造函数,this指向为obj对象 const result = fn.apply(obj, args) // 如果构造函数执行结果是对象就返回该结果;否则,返回obj对象 return result instanceof Object ? result : obj}