小编两天都没有更新文章了,小伙伴们是不是等着急了,今天开始再继续我们的《每天一篇javascript学习小结》系列文章,希望大家继续关注。
1、Function 函数调用(类似call方法)
function add10(num){
return num + 10;
}
var result1 = callSomeFunction(add10,10);//<a href="/tag/diaoyong/" target="_blank" class="keywords">调用</a>add10 把参数10传给add10
alert(result1); //20
function getGreeting(name){
return "Hello," + name;
}
var result2 = callSomeFunction(getGreeting,"Nicholas");
alert(result2); //Hello,Nicholas
2、函数返回函数
return function(object1,object2){
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 @H_<a href="/tag/404/" target="_blank" class="keywords">404</a>_12@ value2){
return 1;
} else {
return 0;
}
};
}
var data = [{name: "Zachary",age: 28},{name: "Nicholas",age: 29}];
data.sort(createComparisonFunction("name"));//sort<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>接收一个<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>作为排序的参考,<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>createComparisonFuntion返回了一个匿名的排序<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>
alert(data[0].name); //Nicholas
data.sort(createComparisonFunction("age"));
alert(data[0].name); //Zachary
3、apply()方法使用
function callSum1(num1,num2){
return sum.apply(this,arguments);//sum<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>请求把callSum1的指针传给自己,并作计算,此时的this指向callSum1
}
function callSum2(num1,[num1,num2]);
}
alert(callSum1(10,10)); //20
alert(callSum2(10,10)); //20
4、函数Arguments Caller使用
5、arguments.callee.caller
函数体本身,arguments.callee.caller就是函数体的调用函数体
}
outer();
function factorial(num){
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num-1)//callee当前函数的引用即factorial函数本身的函数体
}
}
var trueFactorial = factorial;
factorial = function(){
return 0;
};
alert(trueFactorial(5)); //120
alert(factorial(5)); //0
6、Funtion bind()方法
function sayColor(){
alert(this.color);
}
var objectSayColor = sayColor.bind(o);
objectSayColor(); //blue
/*
bind主要是为了改变<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>内部的this指向,这个是在ECMA5以后加入的,所以IE8一下的浏览器<a href="/tag/buzhichi/" target="_blank" class="keywords">不支持</a>
bind<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>会创建一个新<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>,称为绑定<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>.当<a href="/tag/diaoyong/" target="_blank" class="keywords">调用</a>这个绑定<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>时,绑定<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>会以创建它时传入bind<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>的第一个参数作为this,传入bind<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>的第二个以及以后的参数<a href="/tag/jiashang/" target="_blank" class="keywords">加上</a>绑定<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>运行时本身的参数按照顺序作为原<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>的参数来<a href="/tag/diaoyong/" target="_blank" class="keywords">调用</a>原<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>.
*/
7、Function call()方法
function sayColor(){
alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red 此时this指向window
sayColor.call(window); //red 同上
sayColor.call(o); //blue 此时sayColor的指针指向o
function sum(num1,num2){
return num1 + num2;
}
function callSum(num1,num2){
return sum.call(this,num1,num2);
}
alert(callSum(10,10)); //20
8、函数长度length
function sum(num1,num2){
return num1 + num2;
}
function sayHi(){
alert("hi");
}
alert(sayName.length); //1
alert(sum.length); //2
alert(sayHi.length); //0
//实际返回的是<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>的参数的长度
以上就是今天的javascript学习小结,之后每天还会继续更新,希望大家继续关注。