201506170744_《JavaScript权威指南(第六版)——函数调用变长实参和可选形参、》(P171-175)
一. 构造函数调用 (分有无return)
1. var obj = new Object();
var obj = new Object;
这两行代码是等价的;表达式: new Obj.m();中,this指向的并不是Obj!!
构造函数通常不是用return关键字;
二. 间接调用
1. call();和apply(); 作用:任何对象都可以调用任何方法/
call();——使用它自有的实参作为函数的实参;
apply();——以数组的形式传入实参;
2. 可选参数 : var a = a || [];
3. 可变长的实参 : arguments是指向实参的引用;
例如:
function add(a,b,c) {
if(arguments.length != 3) {
throw new Error("参数实际传入的个数为: " + arguments.length +"个,但是函数定义的形参个数是3个!");
}else{
return a + b + c
}
};
add(1,1,2,9); //Error: 参数实际传入的个数为: 4个,但是函数定义的形参个数是3个!
3. function add(a,b,c) {if(arguments.length != 3) {throw new Error("参数实际传入的个数为: " + arguments.length +"个,但是函数定义的形参个数是3个!");}else{arguments[0] = null;return a + b + c}}; add(9,1,2); //结果为 :3。 "9"被置为"null"值;
4. arguments在严格模式下它不能被赋值,不能作为形参名,被作为了保留字。
5.