说说js里new一个实例具体做了些什么

本文主要介绍了JS中new操作符的内部原理,包括创建空对象、设置原型、执行构造函数代码以及返回对象等步骤。还通过验证不同返回类型的情况,进一步说明了new的工作机制。最后,为加深理解,实现了一个自定义的new函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
js里我们经常看到类似上面的代码,从表面上看就知道new了一个person函数的实例对像tom,new时内部具体做了些什么呢,主要就做了这4件事
1.创建一个空对像(假设叫obj)
2.设置这个空对像的__proto__指向构造函数的prototype(obj.proto= person.prototype)
3.让构造函数里的this指向这个空对像,然后执行构造函数里的代码(this.name=“tom”,等价于obj.name=“tom”)
4.如果函数没return语句,或者return基本数据类型(number,boolean,string,undefined,null),则最终返回这个生成的对像,如果函数return一个引用类型的数据,那最终返回这个引用类型

第四点需要验证一下
在这里插入图片描述
可以看到return number基本类型1时,还是返回的那个内部生成的对像

在这里插入图片描述

可以看到return一个对像时,最终返回的是这个对像,另外我们看到这个对像里没有name属性,这说明什么,说明person函数里的this指向的还是内部生成的那个对像,并没有指向我们返回的这个对像

说了这么多,是不是对new的实质了解了,我们来自己实现个new函数加深下加深下理解
在这里插入图片描述
看看是不是和文章最开始打印出的结果一样的,这样我们就简单实现了一个自己的new

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值