变量、作用域和内存问题
- 变量
基本类型值和引用类型值 - 执行环境和作用域
当代码在一个环境中执行时,会创建变量对象的一个作用域链(scope chain) - 作用域链
保证对执行环境中有权访问的所有变量和函数的有序访问。 - 垃圾收集
标记清除、引用计数
引用类型
- 引用类型
引用类型的值(对象)是引用类型的一个实例。
在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。 - Object
- 使用new操作符后跟Object构造函数
- 对象字面量表示法
- Function
函数是对象。
每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。
函数名是一个指向函数对象的指针。- 函数声明语法
- 函数表达式定义函数
- Function构造函数
- 函数声明提升
- 函数内部属性
- arguments
类数组对象 - arguments的属性callee
该属性是一个指针,指向拥有这个arguments函数的对象。 - this
this引用的是函数执行的环境对象
- arguments
- apply和call
每个函数都包含两个非继承而来的方法,用途:在特定的作用域中调用函数。
扩充函数作用域
参数形式不同,apply的参数是数组实例,或者arguments;call的参数必须逐个列举出来。
理解对象
- 对象
ECMA-262把对象定义为"无序属性的集合,其属性可以包含基本值、对象或者函数。" - 属性类型
- 数据属性
- 访问器属性
- Object.defineProperty()
- Object.definePropertys()
- Object.getOwnPropertyDescriptor()