javascript中的数组
- js的数组并不是一个线性列表,而其实是个对象,下标中的数字不代表它在线性表中的索引位置,把它理解成java中的Map更合适
- 对于数组,提供了一些额外的方法,它们定义在Array.prototype中
- 因为数组其实是对象,你可以给一个数组加入新方法,比如total,用来计算总和的方法,但由于方法名是字符串,所以它并不改变数组的长度length
javascript中的函数
- 在javascript中函数可以这么理解:“在某一上下文中执行一系列操作语句的集合”
- 函数其实也是一个对象,因为你可以在已声明函数上绑定属性,而这一点只有对象才能这么做
- this表示的是这个函数的当前执行上下文,既不是函数自身,也不是该函数作用域
- 全局定义下的函数,如果从全局调用,this就是全局对象,在浏览器环境下的全局就是window对象
- 函数在声明时,this是不确定的,只有在执行的时候,this才会确定,所以this只代表着某个执行上下文对象
- this是运行时的调用上下文,这使得同一个函数可重用在多个执行上下文提供了方便和可能
- 所有函数都有一个call函数可以调用,call函数的第一个参数用于显式绑定this对象
- 从ES5开始,内建函数Function.prototype.bind,用于硬绑定一个对象到指定的函数上下文
- bind函数有重要意义,它使得javascript中的function只关注行为,object只关注状态,为框架和代码分离提供了基础保证