- 创建一个空对象
- 将这个空对象的__proto__连接到父类的prototype上
- 通过call方法将this绑定上下文
- 返回这个对象
function Per(name, age) { this.name = name this.age = age }
function newFun() {
const obj = {} //1 创建空对象
obj.__proto__ = Per.prototype//2 将创建对象的__proto__ 指向父类的prototype
Per.call(obj, ...arguments) //3 绑定创建对象this上下文并且传参
return obj
}
const per = newFun('12', 1)
console.log(per);// Per{name:'12',age:1}`
重点在于2,3步
2.prototype 原型方法
3.call 改变this绑定方法
如果跳过第二步 也能达到相同的效果
打印出{name:'12',age:1}
区别在于没有连接上Per构造函数
主要内容是原型链的知识与call修改this指向的知识