JavaScript開(kāi)發(fā)購(gòu)物車(chē)之相關(guān)DOM操作(二)
上一節(jié),我們主要是獲取所要操作的節(jié)點(diǎn)對(duì)象
本節(jié)主要主要涉及cookie的設(shè)置獲取操作,采用單例設(shè)計(jì)模式進(jìn)行了封裝設(shè)計(jì)
單例設(shè)計(jì)模式 ? ?
下面是維基百科對(duì)單例模式的介紹:
在應(yīng)用單例模式時(shí),生成單例的類(lèi)必須保證只有一個(gè)實(shí)例的存在,很多時(shí)候整個(gè)系統(tǒng)只需要擁有一個(gè)全局對(duì)象,才有利于協(xié)調(diào)系統(tǒng)整體的行為。比如在整個(gè)系統(tǒng)的配置文件中,配置數(shù)據(jù)有一個(gè)單例對(duì)象進(jìn)行統(tǒng)一讀取和修改,其他對(duì)象需要配置數(shù)據(jù)的時(shí)候也統(tǒng)一通過(guò)該單例對(duì)象來(lái)獲取配置數(shù)據(jù),這樣就可以簡(jiǎn)化復(fù)雜環(huán)境下的配置管理。
單例模式的思路是:一個(gè)類(lèi)能返回一個(gè)對(duì)象的引用(并且永遠(yuǎn)是同一個(gè))和一個(gè)獲得該實(shí)例的方法(靜態(tài)方法,通常使用 getInstance 名稱)。那么當(dāng)我們調(diào)用這個(gè)方法時(shí),如果類(lèi)持有的引用不為空就返回該引用,否者就創(chuàng)建該類(lèi)的實(shí)例,并且將實(shí)例引用賦值給該類(lèi)保持的那個(gè)引用再返回。同時(shí)將該類(lèi)的構(gòu)造函數(shù)定義為私有方法,避免其他函數(shù)使用該構(gòu)造函數(shù)來(lái)實(shí)例化對(duì)象,只通過(guò)該類(lèi)的靜態(tài)方法來(lái)得到該類(lèi)的唯一實(shí)例。
完整形式:[]中是可選項(xiàng) ? ?
document.cookie ?= “name=value[;expires=date][;path=path-to-resource][;domain=域名][;secure]”
<script> var cookieObj = { /* 增加或修改cookie 參數(shù):o 對(duì)象{} name:string cookie名 value:string cookie值 expires:Date對(duì)象 過(guò)期時(shí)間 path:string 路徑限制 domain:string 域名限制 secure:boolean true https false或undeinfed */ set: function(o) { var cookieStr = encodeURIComponent(o.name) + "=" + encodeURIComponent(o.value); //encodeURIComponent() 函數(shù)可把字符串作為 URI 組件進(jìn)行編碼。 if(o.expires) { cookieStr += ";expires=" + o.expires; } if(o.path) { cookieStr += ";path=" + o.path; } if(o.domain) { cookieStr += ";domain=" + o.domain; } if(o.secure) { cookieStr += ";secure"; } document.cookie = cookieStr; }, /* 刪除 參數(shù):n string cookie的名字 */ del: function(n) { var date = new Date(); date.setHours(-1); //setHours() 方法用于設(shè)置指定的時(shí)間的小時(shí)字段。 //this代表的是當(dāng)前函數(shù)的對(duì)象 this.set({ name: n, expires: date }); }, /*查找*/ get: function(n) { n = encodeURIComponent(n); var cooikeTotal = document.cookie; var cookies = cooikeTotal.split("; "); //split() 方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組。 for(var i = 0, len = cookies.length; i < len; i++) { var arr = cookies[i].split("="); if(n == arr[0]) { return decodeURIComponent(arr[1]); //decodeURIComponent() 函數(shù)可對(duì) encodeURIComponent() 函數(shù)編碼的 URI 進(jìn)行解碼。 } } } } </script>
創(chuàng)建一個(gè)cookie.js文件把上面的JavaScript代碼放入其中。
<script type="text/javascript" src="cookie.js"></script>
以后從HTML頁(yè)面調(diào)用,實(shí)現(xiàn)功能模塊效果。