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