Extjs中的一些特殊用法

 1.文本节点的处理

        var textNode=document.createTextNode(data)

        这儿的data可以是带标签的string类型数据


       Node.nodeType==3判断是文本节点时

       可以通过var text=Node.text || Node.textContent  //前IE 后FF获取文本节点的文本


      在option集合中   通过selectObject.option[index].text获取选项的文本


2 RegExp的特殊使用

    2.1通过传入的字符串创建正则式:

         把传入的字符串转化为可用的正则式,作为RegExp构造方法的参数

         escapeRe : function(s) {
                 return s.replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1");
         },

       这儿replace的第二个参数 replacement   是\\$1表示仅仅匹配第一个子匹配同时返回值带有一个\  如:

      "John Smith".replace(/(\w+)\s(\w+)/, "\\$1"); 返回的是Jorn但为什么没有返回\Jorn,还不清楚

 

    2.2 Extjs中判断selector的类型

         var reg=/^(#)?([\w-\*]+)/;
         var str="div>a";
         var result=str.match(reg);
         for (var i=0;result[i];i++){
                         alert(result[i]);

         }

       这儿则正式的涵义是 是否有一个或0个以#开头的随后是一个或多个  单词或-或*的匹配

       这儿的结果是div  如果str="#div>a";结果是#div  # div

 

      2.3 匹配行样式表

        nthRe = /(\d*)n\+?(\d*)/    d*匹配0个或多个数字 \+?表示0个或一个+

 

      2.4  ?:pattern匹配

         官方解释:

        (?:pattern)匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有   用。  如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

      Extjs中此句   /^(?:scope|delay)$/  

      那么 /^(?:scope|delay)$/ 和 /^(scope|delay)$/ 相比,后者的括号可以获取子匹配,而前者不获取子匹配

  2.5 String.replace(regexp,replacement)当第二个参数为fn  实例

       function regReplace(){
                          var str="我是猪,我是猪";
                          str.replace(/我/g,function(){
                                     for(var i=0;i<arguments.length;i++){
                                            alert(arguments[i])
                                    }
                                    return "你";
                       });
         }
       regReplace()

      这儿的因为使用g进行全局匹配,所以function会多次调用,每次调用会传递三个参数,1匹配的字符 2匹配字符的index  3进行匹配的字符串

     此方法在Extjs中的使用

     Ext.onReady(function() {
                     var s = String.format('<div>姓名:{0}<br/>年龄:{1}</div>',"大漠穷秋","26");
                           document.body.innerHTML=s;
     });
      Ext扩展的String中的format方法
                  format : function(format){
                           var args = Ext.toArray(arguments, 1);
                                         return format.replace(/\{(\d+)\}/g, function(m, i){
                                                                                                                return args[i];
                                        });

     }

3 使用new 后function的类型为object ,没有new 时是function,所以通过判断js对象是否实例化

 

4内置的原型对象,在使用new 实例化后 指向var xx=function(){}xx的原型对象,所以通过prototype添加方法时,只有实例化才能引用prototype中的方法

 

5.js中component的bubble和capture 使用bubble和capture都必须在supercomponent上设置,才回产生bubble和capture的效果,并且只针对diretct subcomponent才会产生效果

 

 6.js中排序的实现

   在Array原生函数中有一个sort(fn),fn中有两个参数  实例:

       var fn=function(a,b){
                        if(typeof(a)=="string"){
                        return a.localeCompare(b);
            }
           return a-b;
      };
      var arr=['张三','李四','王二','麻子'];
      arr.sort(fn);
       alert(arr);

在Extjs中ArrayStore中filterBy(fn,scope)的实现类似,在实现上可以参考java的Comparitor接口的实现

 

 

   

        


 

         

     

      

        

     



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值