new 所做的事:
- 创立一个对象
- 将函数内的this指向这个对象
- 执行函数内的办法
- 返回这个对象
其中须要留神:
- 创立一个对象,并且这个对象继承函数原型的属性和办法
- 如果函数外部没有返回一个对象类型,那么会返回第一步创立的对象
`function myNew(Fn, ...args) {`
`// 创立一个对象`
`var obj = Object(Fn.prototype)`
`// 用obj调用fn`
`var resault = Fn.apply(obj, args)`
`// 返回`
`var type = typeof resault`
`var isObj = resault != null && (type === 'object' || type ==='function')`
`return isObj ? resault : obj`
`}`
发表回复