js实现new关键字

先理清楚 new 关键字调用函数都的具体过程,那么写出来就很清楚了

  1. 首先创建一个空的对象,空对象的__proto__属性指向构造函数的原型对象
  2. 把上面创建的空对象赋值构造函数内部的this,用构造函数内部的方法修改空对象
  3. 如果构造函数返回一个非基本类型的值,则返回这个值,否则上面创建的对象

function _new(fn, ...arg) {
  var obj = Object.create(fn.prototype);
  const result = fn.apply(obj, ...arg);
  return Object.prototype.toString.call(result) == '[object Object]' ? result : obj;
}

posted @ 2022-04-10 11:19  下一秒钟已经不同  阅读(66)  评论(0)    收藏  举报