JavaScript实现基于Cookie的存储类实例

 更新时间:2015年04月10日 08:59:04   作者:liuli  
这篇文章主要介绍了JavaScript实现基于Cookie的存储类,实例分析了javascript通过cookie实现数据存储的技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了JavaScript实现基于Cookie的存储类。分享给大家供大家参考。具体分析如下:

通过这个JS类,你可以象使用session一样使用cookie,非常简单了!

/*
 * CookieStorage.js
 * 本类实现像localStorage和sessionStorage一样的存储API
 * 不同的是,它是基于HTTP Cookies实现的.
 */
function CookieStorage(maxage, path) {
// 两个参数分别代表储存有效期和作用域
 // 获取一个储存全部cookies的对象
 var cookies = (function() {
 // 类型之前介绍的getCookies函数
  var cookies = {};
  // 该对象最终会返回
  var all = document.cookie;
  // 以大字符串的形式获取所有cookies的信息
  if (all === "")
  // 如果该属性为空白符
   return cookies;
   // 返回一个空对象
  var list = all.split("; ");
  // 分离出名/值对
  for(var i = 0; i < list.length; i++) {
  // 遍历每个cookie
   var cookie = list[i];
   var p = cookie.indexOf("=");
   // 找到第一个“=”符号
   var name = cookie.substring(0,p);
   // 获取cookie的名字
   var value = cookie.substring(p+1);
   // 获取cookie对应的值
   value = decodeURIComponent(value);
   // 对其值进行解码
   cookies[name] = value;
   // 将名值对存储到对象中
  }
  return cookies;
 }());
 // 将所有cookie的名字存储到一个数组中
 var keys = [];
 for(var key in cookies) keys.push(key);
 // 现在定义储存API公共的属性和方法
 // 储存的cookies的个数
 this.length = keys.length;
 // 返回第n个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;
 };
 // 储存cookie值
 this.setItem = function(key, value) {
  if (!(key in cookies)) {
  // 如果要促成的cookie还不存在
   keys.push(key);
   // 将指定的名字加入到储存所有cookie名的数组中
   this.length++;
   // cookies个数加一
  }
  // 将该名/值对数据存储到cookie对象中.
  cookies[key] = value;
  // 开始正式设置cookie.
  // 首先将要储存的cookie的值进行编码
  // 同时创建一个“名称=编码后的值”形式的字符串
  var cookie = key + "=" + encodeURIComponent(value);
  // 将cookie的属性也加入到该字符串中
  if (maxage) cookie += "; max-age=" + maxage;
  if (path) cookie += "; path=" + path;
  // 通过document.cookie属性来设置cookie
  document.cookie = cookie;
 };
 // 删除指定的cookie
 this.removeItem = function(key) {
  if (!(key in cookies)) return;
  // 如果cookie不存在,则什么也不做
  // 从内部维护的cookies组删除指定的cookie
  delete cookies[key];
  // 同时将cookie中的名字也在内部的数组中删除.
  // 如果使用ES5定义的数组indexOf()方法会更加简单.
  for(var i = 0; i < keys.length; i++) {
  // 遍历所有的名字
   if (keys[i] === key) { 
   // 当我们找到了要找的那个
    keys.splice(i,1); 
 // 将它从数组中删除.
    break;
   }
  }
  this.length--; 
  // cookies个数减一
  // 最终通过将该cookie的值设置为空字符串
  //以及将有效期设置为0来删除指定的cookie.
  document.cookie = key + "=; max-age=0";
 };
 // 删除所有的cookies
 this.clear = function() {
  // 循环所有的cookies的名字,并将cookies删除
  for(var i = 0; i < keys.length; i++)
   document.cookie = keys[i] + "=; max-age=0";
  // 重置所有的内部状态
  cookies = {};
  keys = [];
  this.length = 0;
 };
}

希望本文所述对大家的javascript程序设计有所帮助。

相关文章

  • Echarts自定义地图和添加图标代码示例

    Echarts自定义地图和添加图标代码示例

    这篇文章主要给大家介绍了关于Echarts自定义地图和添加图标的相关资料,项目中经常会遇到需要渲染echarts地图的情况,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • JavaScript实现穷举排列(permutation)算法谜题解答

    JavaScript实现穷举排列(permutation)算法谜题解答

    这篇文章主要介绍了JavaScript实现穷举排列(permutation)算法谜题解答,穷举排列是指穷举一个数组中各个元素的排列,需要的朋友可以参考下
    2014-12-12
  • javascript高级学习笔记整理

    javascript高级学习笔记整理

    打算做一个js面向对象的贪吃蛇,但是最终是流产了,整理了下废弃的代码,回顾了下PPT.想学习js面向对象的朋友也可以参考下。
    2011-08-08
  • javascript 也来玩玩图片预加载

    javascript 也来玩玩图片预加载

    javascript 也来玩玩图片预加载...
    2007-05-05
  • JavaScript使用Math.Min返回两个数中较小数的方法

    JavaScript使用Math.Min返回两个数中较小数的方法

    这篇文章主要介绍了JavaScript使用Math.Min返回两个数中较小数的方法,涉及javascript中Math.Min方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Uniapp中嵌入H5并在H5中跳转到APP的指定页面方法详解

    Uniapp中嵌入H5并在H5中跳转到APP的指定页面方法详解

    Uniapp是一款基于Vue.js框架的跨平台开发工具,支持在一套代码中开发出运行于各大平台的应用程序,这篇文章主要给大家介绍了关于Uniapp中嵌入H5并在H5中跳转到APP的指定页面的相关资料,需要的朋友可以参考下
    2023-09-09
  • 微信小程序实现弹幕墙(祝福墙)

    微信小程序实现弹幕墙(祝福墙)

    这篇文章主要为大家详细介绍了微信小程序实现弹幕墙、祝福墙效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • JS实现的base64加密解密操作示例

    JS实现的base64加密解密操作示例

    这篇文章主要介绍了JS实现的base64加密解密操作,结合实例形式分析了基于javascript的base64加密与解密函数定义与使用相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • JavaScript常用验证函数实例汇总

    JavaScript常用验证函数实例汇总

    这篇文章主要介绍了JavaScript常用验证函数,实例汇总了如字符串验证、表单验证及js常用特效等诸多js常用验证函数及相关技巧,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • js 中 document.createEvent的用法

    js 中 document.createEvent的用法

    用该方法创建了 Event 对象以后,必须用上表中所示的初始化方法初始化对象。关于初始化方法的详细信息,请参阅 Event 对象参考。
    2010-08-08

最新评论