JavaScript实现基于Cookie的存储类实例
本文实例讲述了JavaScript实现基于Cookie的存储类。分享给大家供大家参考。具体分析如下:
通过这个JS类,你可以象使用session一样使用cookie,非常简单了!
/*
*CookieStorage.js
*本类实现像localStorage和sessionStorage一样的存储API
*不同的是,它是基于HTTPCookies实现的.
*/
functionCookieStorage(maxage,path){
//两个参数分别代表储存有效期和作用域
//获取一个储存全部cookies的对象
varcookies=(function(){
//类型之前介绍的getCookies函数
varcookies={};
//该对象最终会返回
varall=document.cookie;
//以大字符串的形式获取所有cookies的信息
if(all==="")
//如果该属性为空白符
returncookies;
//返回一个空对象
varlist=all.split(";");
//分离出名/值对
for(vari=0;i<list.length;i++){
//遍历每个cookie
varcookie=list[i];
varp=cookie.indexOf("=");
//找到第一个“=”符号
varname=cookie.substring(0,p);
//获取cookie的名字
varvalue=cookie.substring(p+1);
//获取cookie对应的值
value=decodeURIComponent(value);
//对其值进行解码
cookies[name]=value;
//将名值对存储到对象中
}
returncookies;
}());
//将所有cookie的名字存储到一个数组中
varkeys=[];
for(varkeyincookies)keys.push(key);
//现在定义储存API公共的属性和方法
//储存的cookies的个数
this.length=keys.length;
//返回第n个cookie的名字,如果n越界则返回null
this.key=function(n){
if(n<0||n>=keys.length)returnnull;
returnkeys[n];
};
//返回指定名字的cookie值,如果不存在则返回null
this.getItem=function(name){
returncookies[name]||null;
};
//储存cookie值
this.setItem=function(key,value){
if(!(keyincookies)){
//如果要促成的cookie还不存在
keys.push(key);
//将指定的名字加入到储存所有cookie名的数组中
this.length++;
//cookies个数加一
}
//将该名/值对数据存储到cookie对象中.
cookies[key]=value;
//开始正式设置cookie.
//首先将要储存的cookie的值进行编码
//同时创建一个“名称=编码后的值”形式的字符串
varcookie=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(!(keyincookies))return;
//如果cookie不存在,则什么也不做
//从内部维护的cookies组删除指定的cookie
deletecookies[key];
//同时将cookie中的名字也在内部的数组中删除.
//如果使用ES5定义的数组indexOf()方法会更加简单.
for(vari=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(vari=0;i<keys.length;i++)
document.cookie=keys[i]+"=;max-age=0";
//重置所有的内部状态
cookies={};
keys=[];
this.length=0;
};
}
希望本文所述对大家的javascript程序设计有所帮助。