js的new到底做了什么


众所周知,大多数的语言中都有new这个关键词,没有对象,那就new一个吧。

在js中,new主要完成了四件事情

1 // new 做了什么
2 const obj = {}
3 obj.__proto__ = create.prototype
4 // 构造函数如果有返回值得话,就返回这个对象,没有返回对象的话就返回创建的这个obj
5 var result = create.call(obj,this.arguments)
6 return result instanceof Object?result:obj

1.创建一个空的对象

2.第二,每个对象都有一个隐形原型属性:__proto__,这个属性指向的是构造函数的原型(js原型、原型链知识)

就是obj.__proto__ = create.prototype

3.然后利用call函数改变create函数的内部this指向为obj

4.判断构造函数是否有返回对象,如果返回对象的话new就返回那个对象(代码中的result),否则返回新创建的obj


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM