定义:定义一系列算法,将它们逐一封装成
函数,或将它们封装为
属性,然后定义一种
方法,根据
参数自动选择相应的算法。
一般来说,在实现一个函数时可以选择许多
选项。
例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模型
以上是本文的全部内容,希望能对您有所帮助,希望大家多多
支持。