美文网首页
new 操作符都做了些什么

new 操作符都做了些什么

作者: 南蓝NL | 来源:发表于2019-07-13 23:06 被阅读0次
function Foo(name){
   console.log(arguments);
   this.name = name; 
}
let a = new Foo('2');
  • 创建一个空对象
  • 然后让这个空对象的proto 指向构造函数的prototype
  • 执行构造函数,将属性或者方法添加到创建的空对象上
  • 如果构造函数执行的结果返回的是一个对象,那么返回这个对象;如果不是,返回新创建的对象
function _new(){
   // 创建一个空对象
   let target = new Object();
   let [constructor,...args] = [...arguments];
   // 将这个空对象的 __proto__ 指向这个构造函数的prototype
   target.__proto__ = constructor.prototype;
    // 执行这个构造函数,将属性或者方法添加到创建的对象上
   let result = constructor.apply(target, args);
   //   如果构造函数创建的不是一个对象,那么返回这个对象
   if(result&&typeof (result) == 'function' && typeof (result) == 'object'){
       return result;
   }
   // 如果构造函数函数的不是一个对象,返回创建的新对象
   return result;
}

相关文章

网友评论

      本文标题:new 操作符都做了些什么

      本文链接:https://www.haomeiwen.com/subject/kccmkctx.html