一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

JavaScript回调函数的3种用法

时间:2016-04-23 编辑:简简单单 来源:一聚教程网

js 回调函数大致有以下三种用法,

1,直接回调
2,call回调
3,apply回调
回调函数作用得当,减少代码冗余,代码可读性增强,代码维护也轻松很多。
什么要用到回调函数呢?
当有很多地方需要调用同一个函数,并且这一函数根据不同的需要,作不同的处理,这个时候用回调函数就特别合适了。

一,直接回调

function son () { 
 alert('tank test'); 

 
function son1 () { 
 alert('tank test1'); 

 
function father (callback) {   //公共函数 
 callback(); 
 callback.call(); 

 
father(son);      //传son,回调son函数 
father(son1);     //传son1函数,回调son1函数 
在不传参数的情况下,callback(),callback.call()功能是一样的。

二,call和apply回调

1,call和apply区别
call([thisObj[,arg1[, arg2[, [,.argN]]]]])  
 
apply([thisObj[,argArray]]) 
call和apply基本上差不多,只是语法上面的不同。thisobj能继承并替换目标函数中的this对象,下面会实例说明。

2,方法类中回调

function son(name){ 
   this.sonName = name; 
   this.showSonName = function(){ 
       alert(this.sonName);       //弹出tank 
       alert(this.fatherName);    //弹出father,这是父级中的属性,有没有php extends的感觉 
   } 
}       
 
function father(name){ 
   this.fatherName = 'father'; 
   this.showFatherName = function(_callback){ 
       _callback = eval(_callback); 
       _callback.call(this,name); 
       //_callback.apply(this,Array(name)); 
   } 
}       
 
var fa = new father("tank"); 
fa.showFatherName('son');     //传字符串的时候,使用回调的时候,要用eval转换一下 
fa.showSonName(); 
使用call进行回调的时候,call中的this方法,会继承son的方法,并替换

3,域中回调

var son = { 
   name:"son", 
   getname:function(name){ 
       this.fathername();    //弹father 
       this.name=name; 
       alert(this.name);     //弹tank 
   } 

 
var father = { 
   init:function(_callback,name){ 
       _callback = eval(_callback); 
       _callback.apply(this,Array('tank')); 
   }, 
   fathername:function(){ 
       alert('father'); 
   } 

 
father.init('son.getname'); 
使用apply进行回调的时候,apply中的this方法,会继承son的方法,并替换

热门栏目