最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)基于Cookie的存儲(chǔ)類實(shí)例

 更新時(shí)間:2015年04月10日 08:59:04   作者:liuli  
這篇文章主要介紹了JavaScript實(shí)現(xiàn)基于Cookie的存儲(chǔ)類,實(shí)例分析了javascript通過cookie實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了JavaScript實(shí)現(xiàn)基于Cookie的存儲(chǔ)類。分享給大家供大家參考。具體分析如下:

通過這個(gè)JS類,你可以象使用session一樣使用cookie,非常簡(jiǎn)單了!

/*
 * CookieStorage.js
 * 本類實(shí)現(xiàn)像localStorage和sessionStorage一樣的存儲(chǔ)API
 * 不同的是,它是基于HTTP Cookies實(shí)現(xiàn)的.
 */
function CookieStorage(maxage, path) {
// 兩個(gè)參數(shù)分別代表儲(chǔ)存有效期和作用域
 // 獲取一個(gè)儲(chǔ)存全部cookies的對(duì)象
 var cookies = (function() {
 // 類型之前介紹的getCookies函數(shù)
  var cookies = {};
  // 該對(duì)象最終會(huì)返回
  var all = document.cookie;
  // 以大字符串的形式獲取所有cookies的信息
  if (all === "")
  // 如果該屬性為空白符
   return cookies;
   // 返回一個(gè)空對(duì)象
  var list = all.split("; ");
  // 分離出名/值對(duì)
  for(var i = 0; i < list.length; i++) {
  // 遍歷每個(gè)cookie
   var cookie = list[i];
   var p = cookie.indexOf("=");
   // 找到第一個(gè)“=”符號(hào)
   var name = cookie.substring(0,p);
   // 獲取cookie的名字
   var value = cookie.substring(p+1);
   // 獲取cookie對(duì)應(yīng)的值
   value = decodeURIComponent(value);
   // 對(duì)其值進(jìn)行解碼
   cookies[name] = value;
   // 將名值對(duì)存儲(chǔ)到對(duì)象中
  }
  return cookies;
 }());
 // 將所有cookie的名字存儲(chǔ)到一個(gè)數(shù)組中
 var keys = [];
 for(var key in cookies) keys.push(key);
 // 現(xiàn)在定義儲(chǔ)存API公共的屬性和方法
 // 儲(chǔ)存的cookies的個(gè)數(shù)
 this.length = keys.length;
 // 返回第n個(gè)cookie的名字,如果n越界則返回null
 this.key = function(n) {
  if (n < 0 || n >= keys.length) return null;
  return keys[n];
 };
 // 返回指定名字的cookie值,如果不存在則返回null
 this.getItem = function(name){
 return cookies[name] || null;
 };
 // 儲(chǔ)存cookie值
 this.setItem = function(key, value) {
  if (!(key in cookies)) {
  // 如果要促成的cookie還不存在
   keys.push(key);
   // 將指定的名字加入到儲(chǔ)存所有cookie名的數(shù)組中
   this.length++;
   // cookies個(gè)數(shù)加一
  }
  // 將該名/值對(duì)數(shù)據(jù)存儲(chǔ)到cookie對(duì)象中.
  cookies[key] = value;
  // 開始正式設(shè)置cookie.
  // 首先將要儲(chǔ)存的cookie的值進(jìn)行編碼
  // 同時(shí)創(chuàng)建一個(gè)“名稱=編碼后的值”形式的字符串
  var cookie = key + "=" + encodeURIComponent(value);
  // 將cookie的屬性也加入到該字符串中
  if (maxage) cookie += "; max-age=" + maxage;
  if (path) cookie += "; path=" + path;
  // 通過document.cookie屬性來設(shè)置cookie
  document.cookie = cookie;
 };
 // 刪除指定的cookie
 this.removeItem = function(key) {
  if (!(key in cookies)) return;
  // 如果cookie不存在,則什么也不做
  // 從內(nèi)部維護(hù)的cookies組刪除指定的cookie
  delete cookies[key];
  // 同時(shí)將cookie中的名字也在內(nèi)部的數(shù)組中刪除.
  // 如果使用ES5定義的數(shù)組indexOf()方法會(huì)更加簡(jiǎn)單.
  for(var i = 0; i < keys.length; i++) {
  // 遍歷所有的名字
   if (keys[i] === key) { 
   // 當(dāng)我們找到了要找的那個(gè)
    keys.splice(i,1); 
 // 將它從數(shù)組中刪除.
    break;
   }
  }
  this.length--; 
  // cookies個(gè)數(shù)減一
  // 最終通過將該cookie的值設(shè)置為空字符串
  //以及將有效期設(shè)置為0來刪除指定的cookie.
  document.cookie = key + "=; max-age=0";
 };
 // 刪除所有的cookies
 this.clear = function() {
  // 循環(huán)所有的cookies的名字,并將cookies刪除
  for(var i = 0; i < keys.length; i++)
   document.cookie = keys[i] + "=; max-age=0";
  // 重置所有的內(nèi)部狀態(tài)
  cookies = {};
  keys = [];
  this.length = 0;
 };
}

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JavaScript錯(cuò)誤處理和調(diào)試方法詳解

    JavaScript錯(cuò)誤處理和調(diào)試方法詳解

    代碼審查是調(diào)試JavaScript的重要方法,因?yàn)樗试S多個(gè)開發(fā)人員一起處理代碼庫并在開發(fā)過程的早期發(fā)現(xiàn)錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于JavaScript錯(cuò)誤處理和調(diào)試方法的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • js實(shí)現(xiàn)彈窗效果

    js實(shí)現(xiàn)彈窗效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)彈窗效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JS實(shí)現(xiàn)的N多簡(jiǎn)單無縫滾動(dòng)代碼(包含圖文效果)

    JS實(shí)現(xiàn)的N多簡(jiǎn)單無縫滾動(dòng)代碼(包含圖文效果)

    這篇文章主要介紹了JS實(shí)現(xiàn)的N多簡(jiǎn)單無縫滾動(dòng)代碼,包含了文字及圖文等多種滾動(dòng)效果,涉及JavaScript遞歸調(diào)用及定時(shí)函數(shù)觸發(fā)實(shí)現(xiàn)頁面元素動(dòng)態(tài)變換的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • JavaScript實(shí)現(xiàn)的拼圖算法分析

    JavaScript實(shí)現(xiàn)的拼圖算法分析

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)的拼圖算法,結(jié)合實(shí)例形式分析了javascript圖形拼接與判定算法相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下
    2019-02-02
  • JS同源策略和跨域問題深入分析和解決

    JS同源策略和跨域問題深入分析和解決

    這篇文章主要介紹了JS同源策略和跨域問題深入分析和解決,在Web開發(fā)中,跨域問題是一個(gè)常見且必須解決的難題,當(dāng)瀏覽器出于安全考慮限制不同源之間的資源交互時(shí),開發(fā)者需要掌握多種方案來繞過這些限制,需要的朋友可以參考下
    2025-02-02
  • 5種處理js跨域問題方法匯總

    5種處理js跨域問題方法匯總

    本文匯總了解決js跨域問題的5種方法,除了最后一種使用flash解決跨域問題由于過于高端,沒有做出介紹外,其余四種都做了下總結(jié),這里推薦給有相同需求的小伙伴。
    2014-12-12
  • javascript實(shí)現(xiàn)行拖動(dòng)的方法

    javascript實(shí)現(xiàn)行拖動(dòng)的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)行拖動(dòng)的方法,涉及javascript鼠標(biāo)事件及頁面元素的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • JavaScript模板引擎用法實(shí)例

    JavaScript模板引擎用法實(shí)例

    這篇文章主要介紹了JavaScript模板引擎用法,涉及javascript實(shí)現(xiàn)模板的定義與字符替換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 用js控制視頻播放進(jìn)度基本示例代碼

    用js控制視頻播放進(jìn)度基本示例代碼

    寫前端的時(shí)候,很多的時(shí)候是需要支持要網(wǎng)頁視頻播放的功能,下面這篇文章主要給大家介紹了關(guān)于用js控制視頻播放進(jìn)度的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • 為數(shù)據(jù)添加append,remove功能

    為數(shù)據(jù)添加append,remove功能

    為數(shù)據(jù)添加append,remove功能...
    2006-10-10

最新評(píng)論

永安市| 安丘市| 武平县| 成武县| 永胜县| 叶城县| 清原| 禄劝| 西贡区| 安西县| 澄江县| 南充市| 古丈县| 铜鼓县| 泰兴市| 抚松县| 乐东| 都匀市| 汕尾市| 濉溪县| 多伦县| 潼关县| 和平县| 新闻| 宁乡县| 东宁县| 永仁县| 顺昌县| 静宁县| 衢州市| 子长县| 沧源| 黄浦区| 调兵山市| 抚顺县| 福安市| 威信县| 石泉县| 三都| 武清区| 郯城县|