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

被折叠的 条评论
为什么被折叠?



