zoukankan      html  css  js  c++  java
  • JS模式--装饰者模式(用AOP动态改变函数的参数)

     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'});

  • 相关阅读:
    ARP 协议
    天梯赛L1 题解
    DNS域名系统
    LeetCode 三角形最小路径和
    sql注入漏洞的利用
    XSS漏洞防御
    忘记密码功能漏洞挖掘
    sql bypass
    Web环境搭建组合
    常用数据库的总结
  • 原文地址:https://www.cnblogs.com/meiyh/p/6514845.html
Copyright © 2011-2022 走看看