【笔记】JavaScript - 关于面向对象的一些基本概念知识
关于构造函数和普通函数底层运行原理的对比
- 普通函数
- 普通执行时形成一个独立的私有上下文;在私有上下文中有用于保存私有变量的活动对象AO
- 初始化作用域链
- 初始化this
- 初始化arguments
- 形参赋值
- 变量提升
- 代码执行
- 返回值:return啥就是啥
- 构造函数执行
- 构造函数执行时同样也是先形成一个独立的私有上下文;在私有上下文中有用于保存私有变量的活动对象AO
- 与普通函数不同的是:构造函数在形成私有上下文后,浏览器会默认创建一个实例对象(当前构造函数的实例)
- 初始化this,并让this指向上一步中创建好的实例对象
- 初始化arguments
- 形参赋值
- 变量提升
- 代码执行
函数返回值:
- 如果没有返回值或返回值是一个基本类型值,则浏览器会忽略其返回值而是把创建的实例对象作为返回值返回
- 如果返回值是一个引用类型值,则浏览器会把这个引用类型值作为返回值返回
关于构new造函数加括号和不加括号的对比
- new Fn VS new Fn()
- 相同点:两种方式都是把函数Fn执行
不同点:
- new Fn 没有传递实参; 并且运算符优先级是18
- new Fn():可以传递实参;并且运算符优先级是19
还没有评论,来说两句吧...