javascript 调用函数方式 - 摘自js语言精粹
如标题, 做个笔记.
javascript 调用函数
调用一个函数将暂停当年函数的执行, 传递控制权和参数给新函数. 除了声明时定义的形式参数,
每个函数接收两个附加的参数: this 和 arguments. 参数 this 在面向对对象编程中非常重要,
它的值取决于调用的模式. 在 Javascript 中一共有四种调用模式:
方法调用模式;
函数调用模式;
构造器调用模式;
apply 调用模式.
这些模式在如何初始化关键参数 this 上存在差异.
调用运算符是跟在任何产生一个函数值的表达式之后的一对圆括号. 圆括号内可以包含零个或多个
用逗号隔开的表达式. 每个表达式产生一个参数值. 每个参数值被赋予函数声明时定义的形式参数
名. 当实际参数(arguments)的个数与形式参数(parameters)的个数不匹配时不会导致运行错误. 如
果实际参数值多了, 超出的参数值将被忽略. 如果实际参数值过少, 缺失的值将会被替换为 undefined
对参数值不会进行类型检查: 任何类型的值都可以被传递给参数.
1)方法调用模式
当一个函数被保存为对象的一个属性时, 我们称它为一个方法. 当一个方法被调用时, this 被绑定到该
对象. 如果一个调用表达式包含一个属性存取表达式(即一个 . 点表达式或[subscript]下标表达式), 那
么它被当作一个方法来调用.
// 构造一个包含两个数字的数组, 并将它们相加.var array = [3, 4];var sum = add.apply(null, array); // sum == 7// 构造一个包含 status 成员的对象.var statusObject = {stutus: 'A-OK'};// statusObject 并没有继承自 Quo.prototype, 但我们可以在 statusObject 上调用// get_status 方法, 尽管 statusObject 并没有一个名为 get_status 的方法.var status = Quo.prototype.get_status.apply(statusObject);// status == 'A-OK'