轻松掌握Javascript策略模式

轻松掌握Javascript策略模式
定义:定义一系列算法,将它们逐一封装成函数,或将它们封装为属性,然后定义一种方法,根据参数自动选择相应的算法。
一般来说,在实现一个函数时可以选择许多选项
例1:根据员工工资薪金,成绩等级S,A,B,C,计算年终奖。

所有策略包算法的对象
var策略= {
s:函数(工资){
回报工资* 4;
},
A:函数(工资){
回报工资* 3;
},
B:函数(工资){
回报工资* 2;
},
C:函数(工资){
回报工资* 1;
}
定义自动选择算法
VAR将calculateBonus =功能(水平、工资){
返回策略{ }(工资);
}
使用
CalculateBonus(是的,9000); / / 36000
CalculateBonus(B,5000); / / 10000
示例2:表单验证

对象定义验证算法策略
var策略=函数(){()
IsEmpty:功能(价值,errormsg){
如果(值=){
返回errormsg;
}
}
outrangle:功能(价值,民,马克斯,errormsg){
如果(value.length马克斯value.length | | > < min){
返回errormsg;
}
}
相同:功能(属性的旧值,价值,errormsg){
如果(价值!=属性的旧值){
返回errormsg;
}
}
以移动:功能(价值,errormsg){
如果(!(^ / 1 { 5 } { 8,3 | | 0-9 } { 9 } $) /。试验(值)){
返回errormsg;
}
}
......
}
你也可以不定义下列验证类,直接调用策略对象的属性的方法来验证当前输入项时触发的焦点事件损失

验证器 / /的定义
(){ var验证器=功能()
this.cache = { };
}
validator.prototype.add =功能(元素、规则){
var =;
对于(var i = 0,规则;规则=规则{ + }){
(函数(规则){)
无功strategyary = rule.strategy.split(':');
无功errormsg = rule.errormsg;
Self.cache.push(function(){()
VaR策略= strategyary.shift();
strategyary.unshift(元素。值);
StrategyAry.push(errormsg);
回报策略{策略}。应用(元素,strategyary);
})
}(规则)
}
}
validator.prototype.start =函数(){
对于(var i = 0,函数;
无功errormsg = func();
如果(errormsg){
返回errormsg;
}
}
}
使用uff1a

VaR验证=新的验证器();
Validator.add(elem.username,{
{策略:'isempty ',errormsg:不能为空},
{策略:'outrangle:6:12,errormsg:名称长度为6-12}
});
......
无功errormsg = validator.start();
......
附录:参数配置对象

如果有一个函数富(A,B,C,D,E,F…),它有很多参数,这样的函数不好用,参数不好记住!更好的方法是使用一个对象来包含这些参数,然后将对象传递给函数,函数处理对象的属性。

var
甲:55,
B:'ss,
函数(){…}
d:{ 1,y:2 }

}
美孚(支柱);
通过这种方式,在使用函数时不必记住参数的顺序。只需记住参数对象的参数名称。犯错误是不容易的。

参考文献:Javascript模型
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部