js分解urlパラメータ(オブジェクト向け-極簡主義法応用)

2832 ワード

変更前:
 
  
<br>var url="www.taobao.com?key0=a&key1=b&key2=c"; <br>function parseQueryString(url){ <br>var str=url.split("?")[1], <br>items=str.split("&"); <br>var arr,name,value; <br>for(var i = 0, l = items.length; i < l; i++){ <br>arr=items[i].split("="); <br>name= arr[0]; <br>value= arr[1]; <br>this[name]=value; <br>} <br>} <br>var obj=new parseQueryString(url); <br>alert(obj.key1) <br>

変更後:
 
  
<br>var url="www.taobao.com?key0=a&key1=b&key2=c"; <br>var pQString={ <br>createNew:function(url){ <br>var str=url.split("?")[1], <br>items=str.split("&"); <br>var arr,name,value; <br>for(var i = 0, l = items.length; i < l; i++){ <br>arr=items[i].split("="); <br>name= arr[0]; <br>value= arr[1]; <br>this[name]=value; <br>} <br>} <br>} <br>var obj=new pQString.createNew(url); <br>alert(obj.key1) <br>

草根のプログラム猿はとてもすごいことに感谢してこの方法を书き直して、更に厳密で、効率的で、最后にいくつか更に少し勉强します!!!
 
  
<br>function getQueryString(url) { <br>if(url) { <br>url=url.substr(url.indexOf("?")+1); // , split() <br>} <br>var result = {}, // , name, value <br>queryString =url || location.search.substring(1), //location.search (?) URL( )。 <br>re = /([^&=]+)=([^&]*)/g, // , <br>m; <br>while (m = re.exec(queryString)) { //exec() , <br>result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); // decodeURIComponent() URI <br>} <br>return result; <br>} <br>// demo <br>var myParam = getQueryString("www.taobao.com?key0=a&key1=b&key2=c"); <br>alert(myParam.key1); <br>

注意:
1、substr()とsubstring(start,stop)、指定した2つの下付き文字の文字を抽出します.
重要事項:slice()およびsubstr()メソッドとは異なり、substring()は負のパラメータを受け入れない.
//www.jb 51を参照.net/w3school/js/jsref_substring.htm
2、location.search.substring(1) ,location.search設定または戻り疑問符(?)開始URL(照会部).
//www.jb 51を参照.net/w3school/htmldom/prop_loc_search.htm
3、exec()メソッドは、文字列内の正規表現の一致を取得するために使用されます.強すぎてまだ使えない
参照//www.jb 51.net/w3school/js/jsref_exec_regexp.htm
4、符号化されたURIはdecodeURIComponent()を用いて復号される.
//www.jb 51を参照.net/w3school/js/jsref_exec_regexp.htm