每天一篇javascript学习小结(Function对象)
小编两天都没有更新文章了,小伙伴们是不是等着急了,今天开始再继续我们的《每天一篇javascript学习小结》系列文章,希望大家继续关注。
1、Function 函数调用(类似call方法)
functioncallSomeFunction(someFunction,someArgument){ returnsomeFunction(someArgument); } functionadd10(num){ returnnum+10; } varresult1=callSomeFunction(add10,10);//调用add10把参数10传给add10 alert(result1);//20 functiongetGreeting(name){ return"Hello,"+name; } varresult2=callSomeFunction(getGreeting,"Nicholas"); alert(result2);//Hello,Nicholas
2、函数返回函数
functioncreateComparisonFunction(propertyName){ returnfunction(object1,object2){ varvalue1=object1[propertyName]; varvalue2=object2[propertyName]; if(value1<value2){ return-1; }elseif(value1>value2){ return1; }else{ return0; } }; } vardata=[{name:"Zachary",age:28},{name:"Nicholas",age:29}]; data.sort(createComparisonFunction("name"));//sort函数接收一个函数作为排序的参考,函数createComparisonFuntion返回了一个匿名的排序函数 alert(data[0].name);//Nicholas data.sort(createComparisonFunction("age")); alert(data[0].name);//Zachary
3、apply()方法使用
functionsum(num1,num2){ returnnum1+num2; } functioncallSum1(num1,num2){ returnsum.apply(this,arguments);//sum函数请求把callSum1的指针传给自己,并作计算,此时的this指向callSum1 } functioncallSum2(num1,num2){ returnsum.apply(this,[num1,num2]); } alert(callSum1(10,10));//20 alert(callSum2(10,10));//20
4、函数ArgumentsCaller使用
functionouter(){ inner(); } functioninner(){ alert(inner.caller); } outer(); caller //返回一个对函数的引用,该函数调用了当前函数。
5、arguments.callee.caller
functionouter(){ inner(); } functioninner(){ alert(arguments.callee.caller); //argments.callee就是函数体本身,arguments.callee.caller就是函数体的调用函数体 } outer(); functionfactorial(num){ if(num<=1){ return1; }else{ returnnum*arguments.callee(num-1)//callee当前函数的引用即factorial函数本身的函数体 } } vartrueFactorial=factorial; factorial=function(){ return0; }; alert(trueFactorial(5));//120 alert(factorial(5));//0
6、Funtionbind()方法
window.color="red"; varo={color:"blue"}; functionsayColor(){ alert(this.color); } varobjectSayColor=sayColor.bind(o); objectSayColor();//blue /* bind主要是为了改变函数内部的this指向,这个是在ECMA5以后加入的,所以IE8一下的浏览器不支持 bind方法会创建一个新函数,称为绑定函数.当调用这个绑定函数时,绑定函数会以创建它时传入bind方法的第一个参数作为this, 传入bind方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数. */
7、Functioncall()方法
window.color="red"; varo={color:"blue"}; functionsayColor(){ alert(this.color); } sayColor();//red sayColor.call(this);//red此时this指向window sayColor.call(window);//red同上 sayColor.call(o);//blue此时sayColor的指针指向o functionsum(num1,num2){ returnnum1+num2; } functioncallSum(num1,num2){ returnsum.call(this,num1,num2); } alert(callSum(10,10));//20
8、函数长度length
functionsayName(name){ alert(name); } functionsum(num1,num2){ returnnum1+num2; } functionsayHi(){ alert("hi"); } alert(sayName.length);//1 alert(sum.length);//2 alert(sayHi.length);//0 //实际返回的是函数的参数的长度
以上就是今天的javascript学习小结,之后每天还会继续更新,希望大家继续关注。