目录
1.实现步骤
1.先创建一个空对象。
2.把空对象和构造函数通过原型链进行连接。
3.把构造函数的this绑定到新的空对象上。
4.根据构建的函数返回的数据类型判断:如果是值类型,则返回对象;如果是引用类型,就要返回这个引用类型。
2.代码示例
function newFun(Fun,...args){
//先创建一个空对象
let newObj = {}
//把空对象和构造函数通过原型链进行连接
newObj.__proto__ = Fun.prototype
//把构造函数的this绑定到新的空对象上
const result = Fun.apply(newObj,args)
//根据构建的函数返回的数据类型判断:如果是值类型,则返回对象;
//如果是引用类型,就要返回这个引用类型。
return result instanceof Object ? result : newObj
}
3.测试代码
function Person(name){
this.name = name
}
Person.prototype.say = function(){
console.log('abc')
}
const person = newFun(Preson,'孙悟空')
person.say()
console.log(person)