近来在看书的时候无意间翻到了这个问题,今天来讲解细化一下吧。

首先先来明确一下步骤:

  1. 创建一个全新的空对象;
  2. 把这个对象内置的的原型引用指向到构造函数的prototype属性所引用的对象上;
  3. 将函数中的this对象指向这个全新的对象并且执行构造函数。
  4. 如果函数return出去的是一个引用类型的值,则返回这个值;否则就return这个全新的对象。

下面来举个例子说明一下

假设我们要let person = new Person(),编译器首先会创建一个全新的空对象let person = {},然后用person继承Person的原型链person.__proto__ = Person.prototype,再然后是将Person中的this指向这个全新的对象,并且执行构造函数中的代码,最后看函数如果return了其他值则直接return这个值,否则直接return这个全新的对象。

文章目录
3人点赞