function myNew(fn, ...args) {
  // 1.在内存中创建一个新对象
  const obj = {};
  // 2.把新对象的原型指针指向构造函数的原型属性
  obj.__proto__ = fn.prototype;
  // 3.改变this指向,并且执行构造函数内部的代码(传参)
  const res = fn.apply(obj, args);
  // 4.判断函数执行结果的类型
  return res instanceof Object ? res : obj;
}

function Foo() {
  this.name = 'coderxie';

  const obj = {
    name: 'coderxie',
  };

  // return obj;
}

const f1 = new Foo();
console.log(f1);
console.log(f1.__proto__);

const f2 = myNew(Foo);
console.log(f2);
console.log(f2.__proto__);
最后修改:2022 年 08 月 11 日 11 : 24 AM
如果觉得我的文章对你有用,请随意赞赏