- 新生成了一个对象
- 新对象隐式原型链接到函数原型
- 调用函数绑定this
- 返回新对象
1 function myNew(fn,...args){
2 let obj = {}
3 obj.__proto__ = fn.prototype
4 // Object.setPrototypeOf(obj,fn.prototype) => Object.getPrototypeOf(obj) === fn.prototype
5 let res = fn.apply(obj,args)
6 // 防止构造函数主动return function或object
7 if((typeof res === 'object' || typeof res === 'function') && res !== null){
8 return res
9 }
10 return obj
11 }
function myNew(fun) {
let obj = {
__proto__: fun.prototype
}
fun.apply(obj,Array.prototype.slice.call(arguments,1))
return obj
}