获得徽章 16
实现一个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
下一页
个人成就
文章被点赞 72
文章被阅读 33,357
掘力值 1,749
收藏集
8
关注标签
16
加入于