js的new操作符做了哪些事情
2020-08-18 00:08•编程•1649人阅读
近来在看书的时候无意间翻到了这个问题,今天来讲解细化一下吧。
首先先来明确一下步骤:
- 创建一个全新的空对象;
- 把这个对象内置的的原型引用指向到构造函数的prototype属性所引用的对象上;
- 将函数中的this对象指向这个全新的对象并且执行构造函数。
- 如果函数return出去的是一个引用类型的值,则返回这个值;否则就return这个全新的对象。
下面来举个例子说明一下
假设我们要let person = new Person()
,编译器首先会创建一个全新的空对象let person = {},然后用person继承Person的原型链person.__proto__ = Person.prototype
,再然后是将Person中的this指向这个全新的对象,并且执行构造函数中的代码,最后看函数如果return了其他值则直接return这个值,否则直接return这个全新的对象。