-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
使用new关键字调用函数的具体步骤:
- 创建空对象;
var obj = {};- 设置新对象的
constructor属性为构造函数的名称,设置新对象的__proto__属性指向构造函数的prototype对象;
obj.__proto__ = ClassA.prototype;- 使用新对象调用函数,函数中的
this被指向新实例对象:
ClassA.call(obj); //{}.构造函数(); - 将初始化完毕的新对象地址,保存到等号左边的变量中
注意:若构造函数中返回this或返回值是基本类型(number、string、boolean、null、undefined)的值,则返回新实例对象;若返回值是引用类型的值,则实际返回值为这个引用类型。
可以看出,在new的过程中,主要实现了如下过程
- 声明一个中间对象
- 将该中间对象的proto指向构造函数的原型
- 将构造函数的this通过apply指向中间对象
- 返回该中间对象,也就是返回了实例对象
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels