javascript设计模式-(一)

函数柯里化(Currying)

Curring,又称部分求值,是把接受多个参数的函数变换成接受一个单一参数的函数,并且返回接受余下的参数并且返回结 果的新函数的技术。

一个curring的函数首先会接受一些参数,接受了这些参数之后,该函数并不会立即求值,而是继续返回另一个函数,刚 才传入的参数在函数形成的闭包中被保存起来。待到函数被真正需要求值的时候,之前传入的所有参数都会被一次性用于 求值。

例子
普通
    var monthlyCost=0;

    var cost=function(money){
        monthlyCost+=money;
    };

    cost(100);

    cost(200);

    cost(300);

    alert(monthlyCost);` 
柯里化
    var costK=(function(){
        var args=[];
        return function(){
            if(arguments.length==0){
                var money=0;
                for(var i=0;i<args.length;i++){
                    money+=args[i];
                }
                return money;
            }else{
                [].push.apply(args,arguments);
            }
        }
    })();

    costK(100);

    costK(200,300);

    costK(500);

    console.log(costK());

面向切面编程

把一些跟核心业务逻辑模块无关的功能抽象出来,这些跟业务管的功能通常包括日志统计、安全控制、处理等。再通过“在动态织入”的方式掺入业务逻辑模块中。

这样做的好处:首先是可以保持业务逻辑模块的纯净和高内聚性,其次是可以很方便的复用日志统计等功能模块。

例子
    Function.prototype.before=function(beforeFn){
        var _self=this;
        return function(){
            beforeFn.apply(this,arguments);
            _self.apply(this,arguments);
        }
    };

    var func=function(obj){
        console.log("我是"+obj.name);
    }

    func=func.before(function(obj){
        console.log(obj.name=obj.name+"才怪");
    });

    func({
        name:"HL"
    });
说明

给一个函数添加一个在此函数执行之前的执行的函数,并返回一个组合好的函数。

转载于:https://www.cnblogs.com/hlere/p/6746122.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值