构造函数执行和普通函数执行的区别
普通函数执行
- 形成一个全新的私有上下文
- 初始化作用域链<自己的上下文, 上级上下文>
- 初始化this
- 初始化arguments
- 形参赋值
- 变量提升:var function
- 代码执行
- 默认返回undefined
构造函数执行
还是以上面的函数代码为例,result改为:let result = new Fn(10, 20);
,构造函数设计模式【后台语言很多称之为单例模式】
“new”构造函数执行“标准面向对象的编程->构建自定义类”
- Fn被称为类【构造函数】
- result被称为当前类的一个实例。
构造函数执行
- 形成一个全新的私有上下文
- 初始化作用域链<自己的上下文, 上级上下文>
- 默认创建一个空对象“实例对象”(不同1)
- 初始化this:THIS指向创建的空对象
- 初始化arguments
- 形参赋值
- 变量提升:var function
- 代码执行:函数体中遇到的this.xxx=xxx操作,都是给实例对象设置私有的属性或者方法(上下文中的私有变量和实例对象没有任何关系,只有this.xxx才和其有直接关系)(不同2)
- 默认返回创建的对象(如果函数不设置返回值或者返回的是原始值类型,则默认返回的结果是创建的实例对象,只有手动返回对象类型值,才以自己返回的为主)(不同3)