函数参数以及形参
- 如果实际传递参数大于形参数量,超出的参数不会给予形参名称,但是依然能够通过其它方式获取到
- 如果形参数量大于实际传递参数数量,那么没有对应实际参数的形参会赋值为undefine
- 所有的函数调用都会默认传递2个隐式参数:arguments、this。
- arguments拥有length属性的类数组(实际上不是)可以通过arguments[2]取到第3个参数;
- this参数引用了,与该函数调用时进行隐式关联的一个对象,被称为函数上下文。
函数作为构造器调用
- 调用方式:new function();
- 调用时内部行为:
- 创建一个空对象
- 传递给构造器的对象是this参数,从而成为构造器的函数上下文
- 如果没有显式的返回值,那么新创建的对象则作为构造器的返回值返回
函数的apply和call方法
JavaScript 任何一个函数都有apply() 和call() 方法,二者都可以显式的指定任何一个对象作为其函数的上下文。
- func.apply(obj, [1,2,3]);
- func.call(obj, 1, 2, 3);
- 也可以在callback中指定函数上下文: callback.call(obj, n)
自记忆函数
memorization, 能够记住先前的计算结果,以显著的提高性能。
- 记忆之前计算出的值
- 缓存记忆DOM元素
|
|
控制传递函数上下文
函数调用时,通过控制传递函数上下文,在当前对象上执行当前对象没有的方法。例如利用Array或Math上已有的方法,在自定义的数据上进行操作。
|
|
欺骗Array.prototype.slice方法,将其在arguments列表上使用,arguments参数列表并不是一个真正的数组。