实现new操作符的过程:
1.创建一个对象
2.通过new创建的每个对象的_proto_都链接到该函数的prototype对象上
3.如果函数没有返回对象类型Object(包括Function,Array,Date等),那么new表达式中的函数将返回该对象的引用
function(fn){ const res = {} if(fn.prototype!==null){ res.__proto__ = fn.prototype } let last = fn.apply(res,Array.prototype.slice.call(arguments,1)) if((typeOf last === 'object'||typeOf last === 'function')&& last!==null){ return last } return res }