JS面向对象编程 - new构造函数执行和普通函数执行的区别

130 阅读1分钟

普通函数执行

EC(FUNC1)

初始化作用域链:
初始化THIS:
初始化arguments:
形参赋值:
变量提升:
代码执行:

new 构造函数执行

EC(FUNC2)

初始化作用域链: 
`初始化THIS`: 指向创建的实例对象
初始化arguments:
形参赋值:
变量提升:
代码执行:

new 构造函数执行和普通函数执行的区别:

不同1:默认创建一个空对象,也就是”实例对象“;

this: 指向创建的实例对象;

不同2:函数体中遇到的 this.xxx=xxx 操作,都是给实例对象设置私有的属性或方法(上下文中的私有变量和实例对象没有直接关系,只有 this.xxx 才和其有直接关系)

不同3:如果函数不设置返回值或者返回的是原始值类型,则默认返回的结果是创建的实例对象,只有手动返回对象类型值,才以手动返回的对象为主!!