目录
- 手写
手写
/*
* @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
}
检验: