我的函数链之演变

发布于 2022-09-30 18:10:54 字数 3475 浏览 9 评论 0

转:  Snandy

我的函数链之演变

最易读版

  1. 01 function chain(obj){  
  2. 02     function fun(){  
  3. 03         if (arguments.length == 0){  
  4. 04             return fun.obj;  
  5. 05         }  
  6. 06         var methodName = arguments[0], methodArgs = [].slice.call(arguments,1);  
  7. 07         fun.obj[methodName].apply(fun.obj,methodArgs);  
  8. 08         return fun;  
  9. 09     }  
  10. 10     fun.obj = obj;  
  11. 11     return fun;  
  12. 12 }

复制代码易读版

  1. 01 function chain(obj){  
  2. 02     return function(){  
  3. 03         var Self = arguments.callee; Self.obj = obj;  
  4. 04         if(arguments.length==0){  
  5. 05             return Self.obj;  
  6. 06         }     
  7. 07         var methodName = arguments[0], methodArgs = [].slice.call(arguments,1);  
  8. 08         Self.obj[methodName].apply(Self.obj,methodArgs);  
  9. 09         return Self;  
  10. 10     }  
  11. 11 }

复制代码精简版

  1. 01 function chain(obj){  
  2. 02     return function(){  
  3. 03         var Self = arguments.callee; Self.obj = obj;  
  4. 04         if(arguments.length==0){  
  5. 05             return Self.obj;  
  6. 06         }   
  7. 07         Self.obj[arguments[0]].apply(Self.obj,[].slice.call(arguments,1));  
  8. 08         return Self;  
  9. 09     }  
  10. 10 }

复制代码调用

  1. 1 chain(obj)   
  2. 2     (method1,arg1)  
  3. 3     (method2,arg2)  
  4. 4     (method3,arg3)  
  5. 5     ...

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文