首先要理解function 对象,在JavaScript中function和array object,number一样作为一个对象,因此function也可以像普通对象一样可以作为一个参数传递个另一个函数;
function parentF(callback){//callback可以任意定义名称,它只是个参数,此时并不能确定callback的类型(是number,object,function都不确定)
var a=1;
var b=2; console.log("parent"); return callback(a,b);
}
function childF(a,b){ console.log("child"); return a+b;
}
window.onload=function (){
var result= parentF(childF); console.log(result); }
输出结果:
parent
child
3
以上是一个简单的回调函数。
使用function非继承的方法 call(),apply;
call()
function fn(a,b){
return a*b;
}
function fns(a,b){
return fn.call(this,a,b);
} window.onload=function(){ console.log(fns(10,11)); }
apply();
function fn(a,b){
return a*b;
}
function fns(a,b){
return fn.apply(this,[a,b]);
}
function fns1(a,b){
return fn.apply(this,arguments);
} window.onload=function(){ console.log(fns(10,11));
console.log(fns1(10,11)); }