JavaScript中的new具体干了些什么

195 阅读1分钟

1.创建一个空对象

创建一个空对象,并且this变量引入该对象,同时还继承了函数的原型。

2.设置原型链

设置原型链,空对象指向构造函数的原型对象。

3.执行函数体

修改构造函数this指针指向空对象,并执行函数(给对象赋值)。

4.返回这个对象

判断返回值,返回对象就用该对象,没有的话就创建一个对象。

  • 注意:如果手动在构造函数return
    • return值类型:无效,还是返回new创建的对象。
    • return引用类型:有效,覆盖new创建的对象。
function createPerson(name,age,sex){
            //(1)创建空对象  {}
            //(2)this指向这个对象
            this = {}
            //(3)对象赋值
            this.name = name
            this.age = age
            this.sex = sex
            //(4)返回这个对象
            return this
        }

image.png