[ExtJS 3.2ソースコード1日1時間](2)ext-base.jsは何をしましたか(その3)

1703 ワード

urlEncodeメソッドurlの符号化

urlEncode : function(o, pre){
            var empty,
                buf = [],
                e = encodeURIComponent;

            Ext.iterate(o, function(key, item){
                empty = Ext.isEmpty(item);
                Ext.each(empty ? key : item, function(val){
                    buf.push('&', e(key), '=', (!Ext.isEmpty(val) && (val != key || !empty)) ? (Ext.isDate(val) ? Ext.encode(val).replace(/"/g, '') : e(val)) : '');
                });
            });
            // , “&” 
            if(!pre){
                buf.shift();
                pre = '';
            }
            // url 
            return pre + buf.join('');
}

urlDecodeメソッドurlの復号化

 urlDecode : function(string, overwrite){
            //overwrite key value 
            if(Ext.isEmpty(string)){
                return {};
            }
            var obj = {},
                pairs = string.split('&'),
                d = decodeURIComponent,
                name,
                value;
            Ext.each(pairs, function(pair) {
                pair = pair.split('=');
                name = d(pair[0]);
                value = d(pair[1]);
                obj[name] = overwrite || !obj[name] ? value :
                            [].concat(obj[name]).concat(value);
            });
            return obj;
   }