高阶函数

        Function.prototype.before = function(beforefn) {
            var __self = this;
            return function() {
                beforefn.apply(this, arguments);
                return __self.apply(this, arguments);
            };
        };

        Function.prototype.after = function(afterfn) {
            var __self = this;
            return function() {
                var ret = __self.apply(this, arguments);
                afterfn.apply(this, arguments);
                return ret;
            };
        };

        var func = function() {
            console.log(2);
        };

        func.before(function() {
            console.log(1);
        }).after(function() {
            console.log(3);
        })();
原文地址:https://www.cnblogs.com/sorrowx/p/7151368.html