js中new做了什么

 function _new(fn, ...arg) {
 //判断是否是构造函数
    if (!Object.prototype.hasOwnProperty.call(fn, 'prototype')) {
      throw TypeError("fn is not a constructor");
    }
     // 创建一个新的对象,继承fn 返回这个新对象;
    const obj = Object.create(fn.prototype);
    const result = fn.call(this, ...arg);
  // 判断构造函数是否有返回对象,如果返回对象的话new就返回那个对象result,否则返回新创建的obj
    return result instanceof Object ? result : obj;
  }
let c = _new(Foo, "Foo");
 console.log(c, "Foo");

你可能感兴趣的:(js,javascript,前端,开发语言)