JS模式:策略模式,感觉就是一个闭包存储信息,然后是加一些验证方法--还看了老半天
2023-09-11 14:17:27 时间
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script> var varlidator; varlidator = { validate: function(value, type){ var value = value; var type = type; switch(type){ case 'isnonEmpty' : { //..yuju return true; } case 'isNumber' : { //..yuju return true; } case 'isAlphaNum' : { //..yuju return true; } default :{ return 'someting' } } } }; alert(validator.validate('123','isNonEmpty')) ; //有点像命令行模式; var validator = { types : {}, messages : [], config : {}, validate : function(data){ var i, msg , type, checker, result_ok; this.messages = []; for(var i in data){ if(data.hasOwnProperty(i)){ type = this.config[i]; checker = this.types[type]; if(!type){ continue; }; if(!checker){ throw{ name : 'ValidationError', message : 'no handler to validate type '+ type } }; result_ok = checker.validate(data[i]); if( !result_ok ){ msg = 'wrong' + checker.instructions; this.message.push( msg ); } } }; return this.hasErrors(); }, hasErrors : function(){ return this.message.length !== 0 } }; validator.types.inNonEmpty = { validate : function(value){ return value !== ''; }, instructions : 'value can“t be null' }; validator.types.isNumber = { validate : function(value){ return !isNaN( value ) }, instructions : '必须是数字哦' }; validator.types.isAlphaNum = { validator : function(value){ return !/[^a-z0-9]/i,test(value); }, instructions : '必须是数字哦' }; var data = { first_name : 'xx', last_name : '00', age : 26, username : 'qihao' }; validator.config = { first_name : 'isNumber', age : 'isNonEmpty', username : 'isAplhaNum' }; validator.validate( data ); validator.hasErrors(); </script> </body> </html>
相关文章
- [Web] 日期格式化工具Moment.js
- JS框架_(Laydate.js)简单实现日期日历
- Node.js之Console用法小结
- 解决JS(Vue)input[type='file'] change事件无法上传相同文件的问题
- 在JavaScript中使用json.js:访问JSON编码的某个值
- js中几种实用的跨域方法原理详解
- JS获取客户端IP地址、MAC和主机名七种方法
- js中几种实用的跨域方法原理详解
- js es6系列——map函数
- Atitit。Js调用后台语言 java c# php swing android swt的方法大总结
- Atitit.跨语言异常转换机制 java c# php到js的异常转换
- Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216 java c# php js.docx
- 部署 Node.js 应用以完成服务器端渲染 Server Side Rendering 的性能调优
- zone-evergreen.js里的sendNative方法的target参数
- 华为OD机试 - 优秀学员统计(Java & JS & Python)
- javascript(js) Uint8Array转普通数组(int数组)数组拼接concat Uint8Array没有concat()方法
- Unity3D中C#和JS的方法互相調用
- JS直接调用C#后台方法(ajax调用)
- (十八)js控制台方法
- js-jquery-SweetAlert2【二】配置与方法
- js split str.split(" "); split使用方法 在某处截字符串
- 详解js闭包
- js data日期初始化的5种方法
- js删除局部变量的实现方法
- js删除数组中第一个元素方法总结
- js将一维数组转化为二维数组、二维数组转化为一维数组效果demo(整理)
- JS工具方法 2 layui可编辑表格--代码复制后即可使用