new操作符的原理

发布时间 2023-04-05 15:33:01作者: 888实打实

首先这里是一个构造函数:

function Fun(age,name){

this.age=age

this.name=name

}

这个是创建的函数:

function create(fn,...args){

1.创建了一个空对象

var obj = {}

2.将空对象的原型指向构造函数的对象

Object.setPrototypeOf(obj,fn.prototype)

3.将空对象作为构造函数的上下文(改变this指向)

var result = fn.apply(obj,args)

4.对构造函数有返回值的处理判断

return result instanceof Object ? result : obj

}

在这里调用:

create(Fun,18,'张三')