实现一个new 关键字
// 构造函数
function Foo(name, age){
this.name = name;
this.age = age;
}
// 实现一个new操作符
function myNew(fn, ...args){
let obj = {}; // 1.创建一个对象
Object.setPrototypeOf(obj, fn.prototype);// 2.把对象的原型__proto__指向构造函数的prototype属性是
let result = fn.apply(obj, args) // 3.通过apply改变构造函数的this指向,指向创建的对象
return result instanceof Object ? result : obj; // 4.判断返回值类型:返回值是引用类型返回引用类型,是基本类型就返回对象
}
// 使用操作符
console.log(myNew(Foo, 'rebecca', 18))
展开
3