js分解url参数(面向对象-极简主义法应用)

  修改前:

  

复制代码 代码如下:

  <script type="text/javascript">

  var url="www.taobao.com?key0=a&key1=b&key2=c";

  function parseQueryString(url){

  var str=url.split("?")[1],

  items=str.split("&");

  var arr,name,value;

  for(var i = 0, l = items.length; i < l; i++){

  arr=items[i].split("=");

  name= arr[0];

  value= arr[1];

  this[name]=value;

  }

  }

  var obj=new parseQueryString(url);

  alert(obj.key1)

  </script>

  修改后:

  

复制代码 代码如下:

  <script type="text/javascript">

  var url="www.taobao.com?key0=a&key1=b&key2=c";

  var pQString={

  createNew:function(url){

  var str=url.split("?")[1],

  items=str.split("&");

  var arr,name,value;

  for(var i = 0, l = items.length; i < l; i++){

  arr=items[i].split("=");

  name= arr[0];

  value= arr[1];

  this[name]=value;

  }

  }

  }

  var obj=new pQString.createNew(url);

  alert(obj.key1)

  </script>

  感谢 草根程序猿很厉害把这个方法重写了一下,更严密,高效了,最后面在些再学习一下!!!

  

复制代码 代码如下:

  <script type="text/javascript">

  function getQueryString(url) {

  if(url) {

  url=url.substr(url.indexOf("?")+1); //字符串截取,比我之前的split()方法效率高

  }

  var result = {}, //创建一个对象,用于存name,和value

  queryString =url || location.search.substring(1), //location.search设置或返回从问号 (?) 开始的 URL(查询部分)。

  re = /([^&=]+)=([^&]*)/g, //正则,具体不会用

  m;

  while (m = re.exec(queryString)) { //exec()正则表达式的匹配,具体不会用

  result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); //使用 decodeURIComponent() 对编码后的 URI 进行解码

  }

  return result;

  }

  // demo

  var myParam = getQueryString("www.taobao.com?key0=a&key1=b&key2=c");

  alert(myParam.key1);

  </script>

  注:

  1、substr()与substring(start,stop) ,提取字符串中介于两个指定下标之间的字符。

  重要事项:与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。

  参见http://www.glzy8.com/w3school/js/jsref_substring.htm

  2、location.search.substring(1) ,location.search设置或返回从问号 (?) 开始的 URL(查询部分)。

  参见http://www.glzy8.com/w3school/htmldom/prop_loc_search.htm

  3、exec() 方法用于检索字符串中的正则表达式的匹配。太强大了,还不会用

  参考http://www.glzy8.com/w3school/js/jsref_exec_regexp.htm

  4、使用 decodeURIComponent() 对编码后的 URI 进行解码。

  参见http://www.glzy8.com/w3school/js/jsref_exec_regexp.htm