普通函数执行
EC(FUNC1)
初始化作用域链:
初始化THIS:
初始化arguments:
形参赋值:
变量提升:
代码执行:
new 构造函数执行
EC(FUNC2)
初始化作用域链:
`初始化THIS`: 指向创建的实例对象
初始化arguments:
形参赋值:
变量提升:
代码执行:
new 构造函数执行和普通函数执行的区别:
不同1:默认创建一个空对象,也就是”实例对象“;
this: 指向创建的实例对象;
不同2:函数体中遇到的 this.xxx=xxx 操作,都是给实例对象设置私有的属性或方法(上下文中的私有变量和实例对象没有直接关系,只有 this.xxx 才和其有直接关系)
不同3:如果函数不设置返回值或者返回的是原始值类型,则默认返回的结果是创建的实例对象,只有手动返回对象类型值,才以手动返回的对象为主!!