高阶函数

喜你入骨 提交于 2020-02-26 00:20:37

定义:能够包装函数的,使原本函数增加一些额外的福利的函数

比如: function higherOrderFn(fn){} 能够对fn增加一些额外的福利

应用场景:

(function () {
        var getLogin = function () {
            var a = parseInt((Math.random() * 10).toFixed(0));
            if (a % 2 == 0) {
                return {
                    login: false
                }
            }
            return {
                login: true,
                userInfo: {
                    vip: 11,
                    nickname: 'jake',
                    userid: '888888888'
                }
            }
        }
        var withLogin = function (basicFn) {
            var loginInfo = getLogin();
            return basicFn.bind(null, loginInfo);
        }
        window.withLogin = withLogin;
    }

)()


(function () {
    var withLogin = window.withLogin;
    var renderIndex = function (loginInfo) {
        if (loginInfo.login) {
            console.log('login success render main page');
        } else {
            console.log('login failed render main page');
        }
    }

    window.renderIndex = withLogin(renderIndex);
}

)();

(function () {
    var withLogin = window.withLogin;
    var renderPersonalIndex = function (loginInfo) {
        if (loginInfo.login) {
            console.log('login success render personal page');
        } else {
            console.log('login success render personal page');
        }
    }

    window.renderPersonalIndex = withLogin(renderPersonalIndex);
}

)()

(function () {
   window.renderIndex();
})()

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!