`
shiren1118
  • 浏览: 133450 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

js类定义(翻出的js代码)

 
阅读更多
/*类机制定义*/ window.Class = function(name, src) { src.constructor.prototype = src; window[name] = src.constructor; }; /*自定义类*/ Class("ArrayUtils", { constructor: function() { }, toArray : function(iterable) { var length = iterable.length, results = new Array(length); while (length--) { results[length] = iterable[length] }; return results; }, camelize : function(s) { return s.replace(/\-(.)/g, function(m, l){return l.toUpperCase()}); }, inArray : function(arr,item) { return (this.search(arr,item) != null); }, search : function(arr,itm) { for(var i=0; i 100000){ this.items.shift(); } }, remove : function(item){ var s = []; //移除item,然后遍历,把剩下发的赋值给items for(var i = 0, len = this.items.length; i =,,between and * SQL:= TB2.REF_CITY_CODE = '1' AND TB3.REF_REGION_CODE IN (select * from aaa) * 【建议把in的用括号包含】 TB2.REF_CITY_CODE = '1' AND (TB3.REF_REGION_CODE IN (select * from aaa) ) * * HAVING和WHERE的处理方式是一样的HAVING SUM(TB1.PAY_MONEY)0 * where中有聚合函数TB2.REF_CITY_CODE = '1' and sum(TB2.REF_CITY_CODE) * * 【建议把between and用括号包含,要不然就拆成2个大于小于】 * TB2.REF_CITY_CODE between 21 and 44可以改成2个TB2.REF_CITY_CODE> 21 and TB2.REF_CITY_CODE200-----建议使用别名,不要把聚合函数放到where里面 * * select a,b from (select a,b, sum(aa) as c from table1 where c > 100 ) * * * * 目前还不支持一个长括号里面有评级的,能取出来,但是不能替换 * * * * minCell--minCellCopy[相同的()的已被替换成'@',],然后对minCellCopy[i]进行分词即可 * * */ Class("WhereParser", { constructor: function() { // this.key = key;//可能处理类型,key:[where|having] this.items = []; this.myStack = new Stack();//上面有定义 this.inputString = '';//需要解析的字符串 this.logicOperatorKey = ['and','or','in'];//逻辑运算符,报表中where的关键字分隔符:and ,or 和 in this.argoOperatorKey = ['=',''];//算数运算符=,>=, this.exceptOperatorKey = ['between'];//特殊处理between and this.dataObject =new Array();//对象数组,准备放对象的 {field , op , value} this.logicOpArray = []; this.opArray = []; this.typeArray = []; }, getDataObject:function(){ return this.dataObject; }, getLogicOpArray:function(){ return this.logicOpArray; }, getOpArray:function(){ return this.opArray; }, getTypeArray:function(){ return this.typeArray; }, trim: function( text ) { var rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g; return (text || "").replace( rtrim, "" ); }, /*判断是否存在此关键字key,type取值{l是逻辑运算符,a是算数运算符}*/ hasKey : function(type,key){ var arrayUtils = new ArrayUtils(); if(type == 'l'){ return arrayUtils.inArray(this.logicOperatorKey,key); } if(type == 'a'){ return arrayUtils.inArray(this.argoOperatorKey,key); } }, /*设置要解析的字符串*/ setParseString : function(inputString){ this.inputString = inputString; //document.write( "输入字符串:"+this.inputString+"

"); return this;//链式操作 }, /* */ process : function(){ var myString = this.inputString; //document.write("匹对过程
"); //最小计算单元内的左括号个数,当栈的总和为0,此数归0 var leftCount=0; //傀儡,只为存放一个char,其实可以不用 var dummy = new Array(); //this.msg(this.inputString.length); var stackString = "";//只存放栈中完整的字符 var stackStartFlag = false; var wordString = ""; var wordChar = ""; for(var i =0;i<mystring.length i count dummy if>0){ //遇到空格,分词 -------下一个字符不是算数运算符 if(dummy[i-1]==' '&amp;&amp;this.hasKey('a',dummy[i])==false){ //遇空则清 wordString = ""; } wordString = wordString + dummy[i]; if(dummy[i]==' '&amp;&amp;wordString.length&gt;1&amp;&amp;this.myStack.getCount()==0){ var wordString = this.trim(wordString); if(wordString=='AND' || wordString=='OR'){ this.logicOpArray.push(wordString); }else{ //显示不是and和or的 //alert(wordString); this.dataObject.push(wordString); } } } if(stackStartFlag){ stackString = stackString+dummy[i]; } //当'('的时候入栈,记下位置 if(dummy[i]=='('){ this.myStack.add(i); if(leftCount==0){ //alert("开始啦"); stackString = "("; stackStartFlag = true; } leftCount++; this.count++; } //当')'的时候出栈 if(dummy[i]==')'){ var before = this.myStack.next(); var current = i+1; var str = myString.substring(before,current); leftCount--; if(leftCount==0){ //alert("结束啦"); //this.dataObject.push(stackString); stackStartFlag = false; } if(this.myStack.getCount()==0){ wordString = stackString; //recureProcessing(wordString); } document.write("leftCount:="+leftCount+" result="+str+"<hr>"); var bStr = myString.substring(0,before); var aStr = myString.substring(current,myString.length); var finalStr = bStr + "@" + aStr; //alert(aStr.length); if(leftCount&gt;0){ //myStr=myStr.replace(me+'',' '); if(aStr.length"); // document.write( "<font color="red">this.dataObject:"+this.dataObject.length+"个</font><br>"); // document.write("<br>"+this.inputString+"<br>"+"<br>"); var op =""; for(var i =0;i ")&gt;-1){ op="&gt;"; } if(s.indexOf("-1){ op="-1){ op="="; } if(s.indexOf("&gt;=")&gt;-1){ op="&gt;="; } if(s.indexOf("-1){ op="")&gt;-1){ op=""; } var type = "number" ; if(s.indexOf("'")&gt;-1){ type="string"; } // if(s.indexOf(" OR ")&gt;-1){ // logicOp="and"; // } // this.typeArray.push(type); this.opArray.push(op); //document.write( "第"+i+"个 "+s+" op="+op+" type="+type+" logicOp="+this.logicOpArray[i]+" <br>"); } // document.write("<br>"); // document.write("<br>"); // document.write("<br>"); return this;//链式操作 }, msg:function(msg){ alert(msg); } }); //(f=3) and (a=1 and (b=2 or (c=4 and e=5) or (c1=4 and e=5) and ( d=3 ) //var a = new WhereParser(); // a.setParseString(" a&gt;='2' or (a in(20)) and b=3 and ( (c in(1,2,3,4)) and (a in(2,3,4) )) or (a=23) and e=3 "); //a.setParseString(" A&gt;='2' OR C&gt;33 AND B3 AND E</mystring.length>
分享到:
评论

相关推荐

    js代码高亮显示 JavaScript代码高亮 jsp

    JavaScript代码高亮显示是提高代码可读性的关键工具,通过使用像Highlight.js或Prism.js这样的库,可以在JSP页面上轻松实现这一功能。了解如何正确地集成和配置这些库,可以帮助开发者创建更专业、更易于阅读的代码...

    1号店完整代码_js代码_一号店代码_京东1号店_

    - **js**:JavaScript代码库,包含实现上述功能的具体代码。 - **.idea**:这是IDE(如IntelliJ IDEA)的工作目录,包含了项目配置信息,对开发者来说很有用,但对最终用户来说是不可见的。 综上所述,这个项目是一...

    js代码大全 javascript

    在实际开发中,掌握这些知识点将使你能够编写出高效、健壮的JavaScript代码,构建复杂的前端应用。学习并理解这些内容,不仅有助于你提升编程能力,也为进一步深入学习如Node.js后端开发、WebGL图形渲染、WebSocket...

    JS定义类或对象

    ### JS定义类或对象 #### 一、JavaScript与对象概念 JavaScript是一种基于对象的脚本语言,这意味着在JavaScript中,对象扮演着非常重要的角色。在实际项目开发中,开发者经常通过`function fnname{…}`的方式直接...

    javascript格式化工具 整理js代码

    - **可读性**:格式化的JavaScript代码更易于阅读,有助于快速理解代码逻辑,对维护和调试非常有利。 - **一致性**:在团队合作中,统一的代码风格可以减少沟通成本,提高代码审查效率。 - **自动化**:通过格式...

    js2c#-js转换c#代码

    "js2c#"工具正是为了解决跨语言转换的问题,它允许开发者将JavaScript代码转换为C#代码,以便在C#环境中使用。 1. **JavaScript到C#的转换原理**: js2c#工具通过解析JavaScript源码,将其语法规则映射为对应的C#...

    JS定义静态类

    ### JS定义静态类 在JavaScript中,静态类的概念与传统面向对象编程语言中的类有所区别。JavaScript本身是一种基于原型的动态语言,直到ES6(ECMAScript 2015)引入了类语法,才使得类的概念更加清晰。不过,这里的...

    JavaScript 小游戏代码汇总

    JavaScript 小游戏代码汇总 JavaScript 是一种广泛使用的脚本语言,常用于开发 web 应用程序尤其是游戏开发。以下是 JavaScript 小游戏代码汇总的知识点: 1. HTML 基础:代码开头使用的 `&lt;!DOCTYPE html&gt;` 声明...

    js定义类 对象 构造函数,类的继承

    在JavaScript中,类(Class)、对象(Object)和构造函数(Constructor)是面向对象编程的基础。这篇文章将深入探讨这三个概念...在实际开发中,理解并熟练运用这些概念对于编写高效、可维护的JavaScript代码至关重要。

    代码高亮显示javascript插件

    "代码高亮显示JavaScript插件"是专门用于在Web页面中美化和突出显示JavaScript代码的工具,它能够将原始的黑白文本代码转换为具有不同颜色、字体和样式的视觉盛宴。本文将深入探讨这一主题,详细介绍JavaScript代码...

    Java直接运行JS代码

    在Java编程环境中,有时我们需要与JavaScript交互,例如执行一些动态脚本...开发者可以轻松地在Java程序中执行JavaScript代码,调用JavaScript函数,甚至传递Java对象到JavaScript环境,从而实现两者之间的协同工作。

    js精美图片翻转

    这段代码会在用户点击`.flip-container`元素时,切换`.flipper`元素上的`flip`类,而`flip`类在CSS中定义了翻转效果。 5. **图片资源** "images"文件夹很可能包含了用于展示翻转效果的图片资源。在HTML中,这些...

    一个JS代码一个JS代码

    JavaScript,简称JS,是Web开发中的重要脚本语言,用于实现客户端的动态效果和...同时,了解ES6及后续版本的新特性,如箭头函数、解构赋值、模板字符串、Promise和async/await,会帮助你写出更现代的JavaScript代码。

    js代码 多种js效果 代码

    3. 类(ES6新增):`class`关键字定义类,简化面向对象编程。 五、异步编程 1. AJAX:异步JavaScript和XML,实现页面无刷新更新,常用`XMLHttpRequest`对象。 2. Promise:处理异步操作,解决回调地狱问题,使代码...

    javascript中类和继承(代码示例+prototype.js)

    本文将深入探讨JavaScript中的类和继承,并结合`prototype.js`文件中的示例进行解析。 ### 类的概念与模拟 在JavaScript中,我们通常使用函数来模拟类的行为。一个函数可以看作是一个类的定义,通过`new`关键字来...

    一个使用threejs 的简单赛车游戏_JavaScript_代码_下载

    赛车游戏通常包括赛道、赛车、用户控制以及碰撞检测等基本元素,这些都需要通过JavaScript代码和three.js库来实现。 在【标签】中提到的“javascript”,表明这个项目是用JavaScript编写的。JavaScript是Web开发中...

    通过MOZILLA的javascript引擎(SpiderMonkey)执行js代码

    4. 使用`JS_EvaluateScript`或`JS_EvaluateScriptForPrincipals`函数加载并执行JavaScript代码。 5. 在执行完毕后,别忘了清理资源,例如使用`JS_DestroyContext`释放JavaScript上下文。 在`test111.aps`、`test111...

    多功能电子相册翻书页效果特效HTML+css+js代码

    标题 "多功能电子相册翻书页效果特效HTML+css+js代码" 描述了一种用于网页设计的技术,这种技术能够实现模拟真实书籍翻页效果的动态电子相册。电子相册翻页特效使得用户在浏览网页上的照片集时,能够体验到如同翻阅...

    过滤出java中的sql,js中的javascript

    对于JavaScript,现代Web开发通常采用模块化和组件化的方式,如使用Webpack或Rollup进行打包,这时候JavaScript代码可能分散在多个`.js`文件中,需要遍历整个项目结构来查找。 总之,“过滤出Java中的SQL,js中的...

    requirejs实现的简单的类定义

    总结起来,RequireJS为我们提供了一种优雅的方式来组织和加载JavaScript代码,而结合类的定义和继承,我们可以构建复杂的面向对象应用程序。在实际项目中,我们还可以利用RequireJS的优化工具进行代码压缩和合并,...

Global site tag (gtag.js) - Google Analytics