重写Ext中的typeOf函数,
重写Ext中的typeOf函数来解决Ext JS中typeOf对字符串对象、元素节点、文本节点、空白文本节点判断并不准确的问题
重写的typeOf函数使用自己实现的TypeOf函数2中的代码
测试代码如下:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2 "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Ext.typeOf</title> 7 <link rel="stylesheet" type="text/css" href="js/ext4/resources/css/ext-all.css"> 8 <link rel="stylesheet" type="text/css" href="css/icon.css"> 9 <!--<script type="text/javascript" src="js/ext4/bootstrap.js"></script>--> 10 <script type="text/javascript" src="js/ext4/ext-all-debug.js"></script> 11 12 <script type="text/javascript" src="js/ext4/locale/ext-lang-zh_CN.js"></script> 13 <script type="text/javascript"> 14 Ext.onReady(_pageLoaded); 15 16 /** 17 * 页面加载完毕后执行的函数 18 * @private 19 */ 20 function _pageLoaded(){ 21 Ext.override(Ext,{ 22 /** 23 返回传入参数的类型 24 */ 25 typeOf:function (value){ 26 //数据类型判断 27 var stringType = Object.prototype.toString.call(value); 28 switch(stringType){ 29 case "[object Null]": return 'null'; 30 case "[object Undefined]": return 'undefined'; 31 case "[object String]": return 'string'; 32 case "[object Number]": return 'number'; 33 case "[object Boolean]": return 'boolean'; 34 case "[object Function]": return 'function'; 35 case "[object Date]": return 'date'; 36 case "[object Array]": return 'array'; 37 case "[object RegExp]": return 'regexp'; 38 case "[object Object]": return 'object'; 39 } 40 //节点类型判断(可扩展) 41 var nodeType = value.nodeType; 42 if(nodeType!='undefined'){ 43 if(nodeType==1){//元素节点 44 return 'element'; 45 } 46 if(nodeType==2){//属性节点 47 return 'attribute'; 48 } 49 if(nodeType==3){//文本节点 50 if(/\S/.test(value.nodeValue)){//节点值包含非空白字符 51 return 'textnode';//非空白文本节点 52 } 53 return 'whitespace'//空白文本节点 54 } 55 } 56 //其它的统一识别为'object' 57 return typeof value;//'object' 58 } 59 60 }); 61 console.info(Ext.typeOf); 62 console.info(Ext.typeOf(new String('123'))); 63 var _obj={nodeType:1}; 64 console.info(Ext.typeOf(_obj)); 65 66 var rfv; 67 Ext.isDefined(rfv); 68 } 69 </script> 70 </head> 71 <body> 72 <table id="table1"> 73 <tr> 74 <td>1</td> 75 <td>2</td> 76 </tr> 77 <tr> 78 <td>3</td> 79 <td>4</td> 80 </tr> 81 </table> 82 <span id="node1">测试文本~~~</span> 83 <span id="node2"> </span> 84 </body> 85 </html>

更多精彩