• 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"
    	});
    
    

    说明

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

  • 相关阅读:
    [HNOI2002]彩票
    贼有意思[最长上升公共子序列](SAC大佬测试题)
    空间漫游(SAC大佬的测试)
    计蒜客NOIP模拟赛D2T3 数三角形
    计蒜客NOIP模拟赛D2T2 直线的交点
    计蒜客NOIP模拟赛(3)D2T1 小区划分
    计蒜客NOIP模拟赛(3)D1T3 任性的国王
    UpdateAfterEvent
    长链剖分学习笔记
    P4292 [WC2010]重建计划
  • 原文地址:https://www.cnblogs.com/hlere/p/6746122.html
Copyright © 2020-2023  润新知