new 的实现如下
1.创建一个空对象
2.让obj的__proto__ 等于构造函数的原形
3 改变this 指向
4 返回新对象
function mockNew(){
let Constructor = [].shift.call(arguments) // 获取构造函数
let obj = {} // 创建对象 不要用 Object.create({}) 这样没有原形
obj.__proto__ = Constructor.prototype //将obj.__proto__ 指向 构造函数的原形
let r = Constructor.apply(obj,arguments) // 改变this 指向
return r instanceof Object ? r : obj // 判断R 是不是引用类型
}