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


Posted in Javascript onAugust 09, 2012

修改前:

<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() 不接受负的参数。
参见https://3water.com/w3school/js/jsref_substring.htm
2、location.search.substring(1) ,location.search设置或返回从问号 (?) 开始的 URL(查询部分)。
参见https://3water.com/w3school/htmldom/prop_loc_search.htm
3、exec() 方法用于检索字符串中的正则表达式的匹配。太强大了,还不会用
参考https://3water.com/w3school/js/jsref_exec_regexp.htm
4、使用 decodeURIComponent() 对编码后的 URI 进行解码。
参见https://3water.com/w3school/js/jsref_exec_regexp.htm
Javascript 相关文章推荐
JavaScript继承方式实例
Oct 29 Javascript
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
Feb 10 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
Java Mybatis框架入门基础教程
Sep 21 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
Dec 03 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
Oct 27 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 Javascript
Openlayers学习之地图比例尺控件
Sep 28 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
Aug 09 #Javascript
JS数学函数Exp使用说明
Aug 09 #Javascript
基于jQuery实现左右div自适应高度完全相同的代码
Aug 09 #Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 #Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 #Javascript
基于jQuery的简单九宫格实现代码
Aug 09 #Javascript
JavaScript基础知识之数据类型
Aug 06 #Javascript
You might like
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
JS实现的全排列组合算法示例
2017/10/09 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
python中字典(Dictionary)用法实例详解
2015/05/30 Python
python批量制作雷达图的实现方法
2016/07/26 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
基于python实现高速视频传输程序
2019/05/05 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
寒假家长评语大全
2014/04/16 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
宾馆卫生管理制度
2015/08/06 职场文书