new 所做的事:
- 创建一个对象
- 将函数内的this指向这个对象
- 执行函数内的方法
- 返回这个对象
其中需要注意:
- 创建一个对象,并且这个对象继承函数原型的属性和方法
- 如果函数内部没有返回一个对象类型,那么会返回第一步创建的对象
function myNew(Fn, ...args) {
// 创建一个对象(并继承 Fn.prototype)
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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。