目录
- 手写
手写
/*
* @param {Function} fn 构造函数
* @return {*}
**/
function myNew(fn, ...args){
if(typeof fn !== 'function'){
return new TypeError('fn must be a function')
}
// 先创建一个对象
let obj = Object.create(fn.prototype)
// 通过apply让this指向obj, 并调用执行构造函数
let res = fn.apply(obj, args)
return (res instanceof Object) ? res : obj
}
检验: