• JS多个函数多个参数如何动态调用,apply的灵活应用


    问题请看代码中的注解: 

    Js代码  收藏代码
    1. //回调函数1  
    2.  function callback(a,b,c)  
    3. {  
    4.   alert(a+b+c);  
    5. }  
    6. //回调函数2  
    7. function callback2(a,b)  
    8. {  
    9.   alert(a+b);  
    10. }  
    11. //这个方法做了一些操作、然后调用回调函数  
    12. function doCallback(fn,args)  
    13. {  
    14.     //do something  
    15.     if(args.length==2)  
    16.     {  
    17.             fn.call(this,args[0],args[1])  
    18.     }  
    19.     if(args.length==3)  
    20.     {  
    21.             fn.call(this,args[0],args[1],args[2])  
    22.     }     
    23.  //假如参数有很多个的话 应该怎么写?难道一致if下去吗?  
    24. }  
    25.   
    26. function test()  
    27. {  
    28.     //动态调用方法、并传递参数  
    29.   doCallback(callback2,['a','b']);  
    30.   doCallback(callback,['a','b','c']);  
    31. }  



    后来经过网友的帮助又找到了一种解决的方法 

    Js代码  收藏代码
    1. //回调函数1  
    2.  function callback(a,b,c)  
    3. {  
    4.   alert(a+b+c);  
    5. }  
    6. //回调函数2  
    7. function callback2(a,b)  
    8. {  
    9.   alert(a+b);  
    10. }  
    11. //这个方法做了一些操作、然后调用回调函数  
    12. function doCallback(fn,args)  
    13. {  
    14.     var executeStr="fn.call(this,@)";  
    15.     for(var i =0;i<fn.length;i++)  
    16.     {  
    17.         executeStr = executeStr.replace("@","args["+i+"],@");  
    18.     }  
    19.     executeStr=executeStr.replace(",@","");  
    20.     eval(executeStr);  
    21. }  
    22.   
    23. function test()  
    24. {  
    25.       
    26.     //动态调用方法、并传递参数  
    27.   doCallback(callback2,['a','b']);  
    28.   doCallback(callback,['a','b','c']);  
    29. }  


    最后发现、最佳的实现方式是: 

    Js代码  收藏代码
    1. //回调函数1    
    2.  function callback(a,b,c)    
    3. {    
    4.   alert(a+b+c);    
    5. }    
    6. //回调函数2    
    7. function callback2(a,b)    
    8. {    
    9.   alert(a+b);    
    10. }    
    11. //这个方法做了一些操作、然后调用回调函数    
    12. function doCallback(fn,args)    
    13. {    
    14.     fn.apply(this, args);  
    15. }    
    16.     
    17. function test()    
    18. {    
    19.         
    20.     //动态调用方法、并传递参数    
    21.   doCallback(callback2,['a','b']);    
    22.   doCallback(callback,['a','b','c']);    
    23. }    



    通过以上三种方法更加清晰的看到apply在javascript中的作用、以及其强大的功能

  • 相关阅读:
    StringBuffer
    判断java标识符
    基本数据类型和String相互转换
    使用String
    Properties属性文件
    Map排序
    java集合之三映射:HashMap、Hashtable、LinkedHashMap、TreeMap
    列表、集合与数组之间相互转换
    自定义列表排序
    ML-支持向量:SVM、SVC、SVR、SMO原理推导及实现
  • 原文地址:https://www.cnblogs.com/ahuing/p/4443936.html
Copyright © 2020-2023  润新知