1

    1. //通用函数
    2. function compose() {
    3. var args = arguments;
    4. var start = args.length - 1;
    5. return function () {
    6. var i = start - 1;
    7. var result = args[start].apply(this, arguments);
    8. while (i >= 0){
    9. result = args[i].call(this, result);
    10. i--;
    11. }
    12. return result;
    13. };
    14. }
    15. function addHello(str){
    16. return 'hello '+str;
    17. }
    18. function toUpperCase(str) {
    19. return str.toUpperCase();
    20. }
    21. function reverse(str){
    22. return str.split('').reverse().join('');
    23. }
    24. var composeFn=compose(reverse,toUpperCase,addHello);
    25. console.log(composeFn('ttsy')); // YSTT OLLEH
    26. //上述过程有三个动作,「hello」、「转换大写」、「反转」,可以看到通过 compose 将上述三个动作代表的函数合并成了一个,最终输出了正确的结果。