仿造new创建对象的过程写一个函数实现
1.创建一个对象
2.执行构造函数,将this指向刚才创建的对象
3.如果该构造函数有返回值,且为对象类型,则直接返回该对象
4.将obj的__proto__指向构造函数的prototype,并将obj的__proto__下的constructor指向构造函数
5.返回创建的对象
代码如下:
function newInstance (Fn,...argument) {
// 1.创建一个空对象
const obj = {}
// 2.执行构造函数,并将this指向obj
const result = Fn.call(obj,...argument)
// 3.如果该构造函数的返回值是Object类型则返回该对象
if (result instanceof Object) {
return result
}
// 4.将obj的_proto_指向构造函数的prototype,并将obj的_proto_下的constructor指向构造函数
obj.__proto__ = Fn.prototype
obj.__proto__.constructor = Fn
// 返回该对象
return obj
}
验证实现效果:
function Person (name, age) {
this.name = name
this.age = age
}
Person.prototype.type = 'human'
let person = newInstance(Person,'wade',42)
console.log(person)

**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。