zoukankan      html  css  js  c++  java
  • 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中的作用、以及其强大的功能

  • 相关阅读:
    fn project 试用之后的几个问题的解答
    fn project 扩展
    fn project 生产环境使用
    fn project 对象模型
    fn project AWS Lambda 格式 functions
    fn project 打包Function
    fn project Function files 说明
    fn project hot functions 说明
    fn project k8s 集成
    fn project 私有镜像发布
  • 原文地址:https://www.cnblogs.com/ahuing/p/4443936.html
Copyright © 2011-2022 走看看