var validator={
//所有可以验证规则处理类存放的地方,后面会单独定义
types:{},
//验证类型所对应的错误消息
messages:[],
//当前需要使用的验证类型
config:{},
//暴露的公开验证类型
validate:function(data){
var msg,type,checker,result;
//清空所有的错误信息
this.messages=[];
for(var i in data){
if(data.hasOwnProperty(i)){
type=this.config[i];//根据key查询是否存在验证规则
checker=this.types[type];//获取验证规则的验证类
}
if(!type){
continue;//验证规则不存在
}
if(!checker){//如果验证规则不存在,抛出异常
throw{
name:'ValidationError',
message:'No handler to validate type'+type
};
}
result=checker.validate(data[i]);
if(!result){
msg='Invalid value for *'+i+'*,'+checker.instructions;
this.messages.push(msg);
}
return this.hasErrors();
}
},
hasErrors:function(){
return this.messages.length!==0;
}
};
//验证给定的值
validator.types.isNotEmpty={
validate:function(value){
return value!=='';
},
instructions:'传入的值不能为空'
};
//验证给定的值是否为数字
validator.types.isNumber={
validate:function(value){
return !isNaN(value);
},
instructions:'传入的值只能是合法的数字'
};
//数据
var data={
first_name:'Tom',
last_name:'Xu',
age:'unKnown',
username:'TomXu'
}
//验证规则
validator.config={
first_name:'isNonEmpty',
age:'isNumber'
}
//使用
validator.validate(data)
if(validator.hasErrors()){
console.log(Validator.message.join("\n"));
}