redux之compose
compose的源码比较简单,但写成es6就比较操蛋
export default function compose(...funcs) { if (funcs.length === 0) { return arg => arg } if (funcs.length === 1) { return funcs[0] } return funcs.reduce((a, b) => (...args) => a(b(...args))) }
转换为es5就比较舒服
function compose() { var _len = arguments.length; var funcs = []; for (var i = 0; i < _len; i++) { funcs[i] = arguments[i]; } if (funcs.length === 0) { return function (arg) { return arg; }; } if (funcs.length === 1) { return funcs[0]; } return funcs.reduce(function (a, b) { return function () { return a(b.apply(undefined, arguments)); }; }); } //引用的是 https://segmentfault.com/a/1190000016460366
流程为
1.将argument每一项拷贝到funs中
2.长度为0 返回一个 返回函数
3.长度为1,返回第一个
4.长度大于1,调用Array.prototype.reduce方法进行整合
                    
                
                
            
        
浙公网安备 33010602011771号