1. new操作符的作用
1.1 创建对象
1.2 链接原型
1.3 绑定this
1.4 返回对象
2. 接下来,我们用代码来实现上述操作
function createNew(){
let obj = {}
let constructor = [...arguments][0]; //获取第一个参数即构造函数
obj.__proto__ = constructor.prototype; //将对象的隐式原型__proto__指向构造函数的显示原型prototype,这样对象就能访问构造函数原型中的属性
constructor.call(obj, [...arguments][1]); //执行构造函数,obj添加构造函数的属性
return obj //返回obj
}
//声明一个构造函数
function Person(name){
this.name = name
}
Person.prototype.showName = function(){
console.log(`我的名字是${this.name}`)
}
const person = createNew(Person, 'jinlong');
console.log(person.name)
console.log(person.showName())
3. 一句话总结:new操作符创建了一个对象,该对象复制了构造函数的属性和构造函数的原型的属性。