js 回调函数 3种用法

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的方法,并替换


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值