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 相关文章推荐
在网页中控制wmplayer播放器
Jul 01 Javascript
jQuery中after()方法用法实例
Dec 25 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
Mar 11 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
May 03 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 Javascript
js入门之Function函数的使用方法【新手必看】
Nov 22 Javascript
js监听input输入框值的实时变化实例
Jan 26 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
Jul 10 Javascript
vue--点击当前增加class,其他删除class的方法
Sep 15 Javascript
vue实现搜索过滤效果
May 28 Javascript
js实现图片无缝循环轮播
Oct 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实现与ASP Banner组件相似的类
2006/10/09 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
详解php命令注入攻击
2019/04/06 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
JS input 数字验证代码
2009/07/30 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
Python 文件重命名工具代码
2009/07/26 Python
学习python类方法与对象方法
2016/03/15 Python
python实现手机通讯录搜索功能
2018/02/22 Python
Python字符串对象实现原理详解
2019/07/01 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Python 如何提高元组的可读性
2019/08/26 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
校园广播稿500字
2014/02/04 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
民事起诉书范本
2015/05/19 职场文书
党员转正意见怎么写
2015/06/03 职场文书
校友会致辞
2015/07/30 职场文书