Function.prototype.before = function (beforefn) { var _self = this; return function () { beforefn.apply(this, arguments); return _self.apply(this, arguments); }; }; var func = function (param) { console.log(param); }; func =func.before( function (param) { param.b = 'b'; }); func({a:'a'});
- 看before函数中,我们会发现他们共用一个arguments,当我们将beforefn函数体内改变arguments,原函数_self接收到的函数参数列表自然也会变化。
- 平时我们在实际开发当中会遇到http请求中带一个Token,但是有些页面又不用或者Token生成方式不一样。
- 请看下面代码:
Function.prototype.before = function (beforefn) { var _self = this; return function () { beforefn.apply(this, arguments); return _self.apply(this, arguments); }; }; var getToken = function () { return 'token'; }; var ajax = function (type, url, param) { console.log(param); }; ajax = ajax.before(function (type,url,param) { param.Token = getToken(); }); ajax('get','http://xx.com/getuseinfo',{name:'test'});