javascript权威指南 第8章 笔记
1.“||”运算符 如果||运算符的第一个参数为true,或者是一个可以转换为trued的值,该运算符就会返回其第一个参数。否则会返回第二个参数。例: a = a||[];如果a已经定义了并且为非null,它则返回a,否则a便是空的。
2.尽管定义javascript函数时有固定数目的命名参数,但当调用这个函数时,传递给它的参数数目却可以是任意的。arguments对象允许完全地存取那些实际的参数值。arguments对象是一个类似数组的对象。
关于arguments的一个例子:
function b(a){
alert(a);
arguments[0]=[12,3];
alert(a);
}
b();//undefined,undefined
b(1);//"1","12,3";
-------------------------
从这个例子中可以看出来1.arguments对象是在有参数传进来的时候才会初始划分配内存的。2.arguments对象有一个非同寻常的特性,当函数具有命名了的参数时,arguments对象的数组元素是存放函数参数的局部变量的同义词。
3.callee属性
arguments对象定义了callee属性,用来引用当前正在执行的函数。这个属性没有多大的用处,但它可以用来允许对未命名的函数递归地进行调用 例
function(x){
if(x<=1) return 1;
return x*arguments.callee(x-1);
}
4.apply()方法和call()方法:apply()方法有两个参数,用作this的对象和要传递个给函数的参数的数组。例如:
function sayColor(sPrefix,sSuffix) { alert(sPrefix + this.color + sSuffix); }; var obj = new Object(); obj.color = "blue"; sayColor.call(obj, new Array("The color is ", "a very nice color indeed."));//最后生成的消息仍是 "The color is blue, a very nice color indeed."
call()方法是与经典的对象冒充方法最相似的方法。它的第一个参数用作this的对象,其他参数直接传递给函数自身。
例:
function sayColor(sPrefix,sSuffix) { alert(sPrefix + this.color + sSuffix); }; var obj = new Object(); obj.color = "blue"; sayColor.call(obj, "The color is ", "a very nice color indeed.");//最后生成的消息 "The color is blue, a very nice color indeed."