日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

JavaScript趣題:構建URI

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

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

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

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

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

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

關鍵的地方來了,這個綁定在原型上的build方法:

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

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

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

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

第2次是履行build方法,需要根據params對象和域名構建新的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)原型模式,由于它比構造函數(shù)-原型式封裝得更好。

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

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


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成人精品免高潮在线观看 | 日韩一区二区三区免费视频 | 亚洲视频在线观看免费 | 国产一区二 | 亚洲免费婷婷 | av高清在线观看 | 伊人久久大香线蕉综合网站 | 久久机 | 日韩在线播放视频 | 中文字幕一区二区三 | 国产不卡在线视频 | 日韩三级一区 | 97自拍偷拍视频 | 韩日一区二区 | 美日韩在线观看 | 黄色激情视频在线观看 | 午夜精品久久久久久久久久久久 | 国产精品亚洲一区 | 日韩久 | 国产精品一区三区 | 精品国产鲁一鲁一区二区张丽 | 国产中文一区二区三区 | 久久国产精品免费一区二区三区 | 国产a免费| 亚州av| 男女国产网站 | a级毛片毛片免费很很综合 91久久 | sese综合 | 三级黄色片 | 色婷婷综合久久久久中文一区二 | 日日夜夜狠狠操 | 可以免费看的av | 美女又爽又黄免费视频 | 黄色高清免费 | 日韩不卡一区二区 | 爆操网站 | 久久1区| 亚洲精品第一 | 久久国产欧美日韩精品 | 夜夜草导航 | 久久久精品国产 |