js中new关键字究竟做了什么呢
要像真正弄懂new关键字做了什么?首先我们先要清楚构造函数,创建构造函数一般有三种方式,这里我们给出最常用的方式。
function Person(name,age){ this.name=name this.age = age } let zhangsan = new Person('zhangsan',18) let lisi = new Person('lisi',19)
该构造函数中没有给出返回值,那么他默认返回的是新创建的值。
new关键字在创建实例对象时,主要经历了下面4个过程:
(1)首先创建一个空对象
let obj = {}
(2)实例对象obj的隐式原型要与Person构造函数的显式原型指向相同
obj.__proto__ = Person.prototype
(3)将构造函数Person内部的this与实例对象obj做绑定,并对构造函数内部的值做一个赋值操作
(4)根据构造函数的返回值类型确定确定新创建的实例对象的具体值。若构造函数的返回值是引用类型的,那么我们新创建的实例对象就是该返回值;若构造函数的返回值不存在(就如上面)那么就默认返回调用构造函数的代码;若返回值存在但不为引用类型,那么返回该新创建的对象
由此引出,什么是引用类型?什么是基础类型呢?
基础类型:Number、String、Undefined、Null、Boolean、Symbol
引用类型:凡是属于Object类型的都是引用类型(包括但不限于Array、Object、Function)。

浙公网安备 33010602011771号