所谓回调函数就是将函数作为一个参数参入另外一个函数,当另外一个函数执行完函数的调用时再执行传入的这个函数的这个参数
回调函数可以是显式的调用和隐性的调用,这里用一段简单的代码来分析javascript回调函数的原理
<script>
var callbackTest = {
func : function(callback){
alert('do Something');
if(callback && callback instanceof Function)
{
callback();
}
else
{
console.error('callbackTest func:'+callback +'is not a function');
}
}
}
callbackTest.func(function(){
alert('success');
});
</script>
func即为被调用的函数,callback传入一个匿名函数进去,待func执行完毕之后执行传进去的callback回调函数
有的时候需要一个函数默认得调用回调函数,这样我们可以把回调函数封装进json对象当中
<script>
var callbackTest = {
func : function(doSomething){
alert(doSomething);
this.callback('callback');
},
callback : function(message)
{
alert(message);
}
};
callbackTest.func('doSomething');
</script>
那么我们是否添加前置回调函数和后置回调函数呢?答案也是可以的
<script>
var callbackTest = {
func : function(doSomething,callback){
this.beforecallback('before callback');
alert(doSomething);
if(!arguments[1])
{
this.callback('callback');
}
else
{
if(callback && callback instanceof Function)
{
callback();
}
else
{
console.error('callbackTest func:'+callback+' is not a Function');
}
}
},
callback : function(message)
{
alert(message);
},
beforecallback : function(message)
{
alert(message);
}
};
callbackTest.func('doSomething',function(){
alert('success');
});
</script>