1. // 把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计,安全控制,异常处理等。
    2. // 把这些功能抽离出来后,再通过动态织入的方式掺入业务逻辑模块中
    3. Function.prototype.before = function(beforeFn) {
    4. var _self = this;
    5. return function() {
    6. beforeFn.apply(this,arguments);
    7. return _self.apply(this,arguments);
    8. }
    9. }
    10. Function.prototype.after = function(afterFn) {
    11. var _self = this;
    12. return function() {
    13. var ret = _self.apply(this,arguments);
    14. afterFn.apply(this,arguments);
    15. return ret;
    16. }
    17. }
    18. var func = function() {
    19. console.log(2);
    20. }
    21. func = func.before(function(){
    22. console.log(1);
    23. }).after(function(){
    24. console.log(3);
    25. })
    26. func();