// 把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计,安全控制,异常处理等。// 把这些功能抽离出来后,再通过动态织入的方式掺入业务逻辑模块中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 = func.before(function(){ console.log(1);}).after(function(){ console.log(3);})func();