多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > JavaScript趣題:構(gòu)建URI

JavaScript趣題:構(gòu)建URI

來源:程序員人生   發(fā)布時間:2016-12-02 09:08:34 閱讀次數(shù):3839次

創(chuàng)建1個UriBuilder對象,使得你可以輕松地對1個URI進(jìn)行配置,參數(shù)調(diào)劑。

var builder = new UriBuilder('http://www.codewars.com') builder.params.page = 1 builder.params.language = 'javascript'
大家可以看到,這個UriBuilder對象實(shí)際上是1個構(gòu)造函數(shù),它接收1個URI作為參數(shù)。

而且,它的實(shí)例上綁定了1個params對象,1個hash表,可以寄存參數(shù)的key和value。

builder = new UriBuilder('http://www.codewars.com?page=1')
這個UriBuilder對象接收的URI是可以帶參數(shù)的,在構(gòu)造函數(shù)被履行的時候,參數(shù)將被自動解析,并被存到params對象中。

builder.params.page = 2
這個實(shí)例上的params對象自然是可以被修改的。

關(guān)鍵的地方來了,這個綁定在原型上的build方法:

// should return 'http://www.codewars.com?page=2' builder.build()
咋們的主要任務(wù)就是如何編寫1個這樣的build方法,它根據(jù)傳入的URI和實(shí)例上的params參數(shù),構(gòu)建新的URI并返回。

由于params參數(shù)是普通對象,因此自然可以刪除其中的屬性。

delete builder.params.page // should return 'http://www.codewars.com' builder.build()
這個題目分為兩步:

第1次是履行UriBuilder構(gòu)造函數(shù),需要解析傳入URI的域名及參數(shù),將參數(shù)放到params對象中。

第2次是履行build方法,需要根據(jù)params對象和域名構(gòu)建新的URI。

function UriBuilder(url){ this.url = url; this.params = {}; this.domain = ""; var parseURL = function(url){ var questionMarkPos = url.indexOf("?"); if(questionMarkPos >= 0){ this.domain = url.slice(0 ,questionMarkPos); var paramStr = url.slice(questionMarkPos + 1); var andMarkPos = paramStr.indexOf("&"); if(andMarkPos >= 0){ var pairs = paramStr.split("&"); for(var i=0;i<pairs.length;i++){ var pair = pairs[i]; var key$Value = pair.split("="); this.params[key$Value[0]] = key$Value[1]; } } else{ var pair = paramStr.split("="); this.params[pair[0]] = pair[1]; } } else{ this.domain = url; } }; parseURL.call(this,this.url); if(typeof UriBuilder.prototype.build === "undefined"){ UriBuilder.prototype.build = function(){ var result = this.domain; var keys = Object.keys(this.params); if(keys.length > 0){ result += "?"; for(var i=0;i<keys.length;i++){ result += keys[i] + "=" + encodeURIComponent(this.params[keys[i]]); if(i < keys.length - 1){ result += "&"; } } } return result; }; } }

在這里,情勢上采取動態(tài)原型模式,由于它比構(gòu)造函數(shù)-原型式封裝得更好。

具體上,采取字符串方法切割,拼接URI,沒有采取正則

值得注意的1點(diǎn),對URI字符串參數(shù)的value進(jìn)行了編碼,這也是原題所要求的。


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产人成精品 | 久久国产三级 | 波多野结衣中文字幕一区二区三区 | 美女教师一级毛片 | 三级做爰大爽长视频在线观看 | 欧美日韩亚洲精品一区二区 | 又粗又硬又黄又爽的免费视频 | 伊人色网站| 亚洲qingse中文字幕久久 | 中文字幕亚洲无线码高清 | 老司机午夜精品网站在线观看 | 日韩国产欧美在线观看一区二区 | www高清| 亚洲欧美男人天堂 | 欧美日韩生活片 | xxxxx视频| 亚洲女人的天堂 | 色琪琪永久远网址 | 91国内精品久久久久怡红院 | free性video18| 亚洲成在线观看 | 黄色网址免费在线 | 性欧美欧美另类巨大 | 69xx在线观看视频 | 日韩精品国产精品 | 国产香蕉一区二区精品视频 | 国内精品久久久久久中文字幕 | 乌克兰性欧美精品高清bd | 一级淫片免费看 | 亚洲成人一级 | 一区二区三区四区在线免费观看 | 最近中文字幕高清字幕6 | 欧美亚洲国产日韩 | 日本成人免费在线视频 | 牛和人交videos欧美冫3d | 午夜影院免费看 | 免费观看欧美成人1314w色 | 欧美色v | 国内精品久久国产大陆 | 国产欧美日韩图片一区二区 | 免费看逼逼 |