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
© 允许规范转载