分类: 系统运维
2008-04-05 14:18:44
1,定义一个函数的三种方式 function f(x){return x*x}//function语句 //Function ctor在js1.1版本及以后有效 var func=new Function("x","return x*x;") //js1.2版本及以后有效 var func=function(x){return x*x;}//函数直接量 a[0]=function(x){return x*x;}//定义函数并保存 //定义一个函数并传递给另一个函数。 a.sort(function(a,b){return a-b;}) //定义一个函数并调用 var tensquared=(function(x){return x*x;})(10) 2,函数就是数据 function add(x,y){return x+y;} function subtract(x,y){return x-y;} function multiply(x,y){return x*y;} function divide(x,y){return x/y;} function operate(operator,operand1,operand2){ return operator(operand1,operand2); } var i=operate(add,operate(add,2,3), operate(multiply,3,4)); 3,arguments变量 arguments表示函数执行时接受的实际参数的数组,因为js的函数调用是不限制传入参数的。arguments数组为实现变参函数提供了可能: function max(){ var max=Number.NEGATIVE_INFINITY; for(var i=0;i } return max; } max(1,2,45,43,1567,0); arguments的callee属性 callee属性引用了当前正在执行的函数,这在匿名函数中实现递归是很有用的。 function(x){ if(x>1)return x*arguments.callee(x-1); return x; } arguments的caller属性 实际参数对象的caller属性引用的是当前函数被调用的调用环境,arguments.caller引用的不是调用当前函数的那个函数,而是调用哪个当前函数的函数的实际参数对象。所以要引用调用函数必须使用argument.caller.callee.慎用arguments.caller属性。 实例可以参见jc 7.4 3,Function的属性和方法 1,length和arity属性 length和arity 表示的是函数期望的参数个数,即函数在声明时使用的参数个数。arity是为了避免与数组的length属性发生冲突而引入的,意义与length属性相同。
prototype属性,留待以后讨论 2,apply,call方法 apply方法允许你调用函数就像该函数是某个对象的方法一样。 f.apply(o,[1,2]); 等价于: o.m=f; o.m([1,2]) delete o.m; call方法的行为与apply类型,只不过掺入的是参数列表而不是参数数组。 f.apply(o.[1,2])等价于f.call(o,1,2); |