实现new操作符

实现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
    
    
}     

 

posted @ 2020-03-02 10:17  你的名字~  阅读(163)  评论(0编辑  收藏  举报