new操作符的原理

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

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,'张三')

 

posted @ 2023-04-05 15:25  爱吃蔬菜的小红帽  阅读(26)  评论(0)    收藏  举报