/**
* @author wsf
*/
var jCookies = (function (){
var instance;//对象引用
var methods = {
/**
* 设置cookie
*/
setCookie : function (cName,cValue,cExpir){
if(cName){
var d = new Date();
if(cExpir)
d.setTime(getNowDateTime()+getSpecificDate(cExpir));
else
d = this.expirDate;
this.doc.cookie = cName + "="+ escape (cValue) + ";expires=" + d.toGMTString();
}
},
/**
* 获得指定cookei
*/
getCookie : function (cName){
var arr,reg=new RegExp("(^| )"+cName+"=([^;]*)(;|$)");
if(arr=this.doc.cookie.match(reg))
return (arr[2]);
else
return null;
},
/**
* 移除cookie
*/
removeCookie : function (cName){
var exp = new Date();
exp.setTime(getNowDateTime() - 1);//当前日期-1
var cval=this.getCookie(cName);
if(cval!=null)
this.doc.cookie= cName + "="+cval+";expires="+exp.toGMTString();
},
/**
* 更改cookie的失效时间
*/
updateCookie : function (cName,cValue,cExpir){
this.setCookie(cName,cValue,cExpir);
},
/**
* 清空所有cookies
*/
clearCookies : function () {
var keys = this.doc.cookie.match(/[^ =;]+(?=\=)/g);
if (keys) {
for (var i = keys.length; i--; )
this.removeCookie(keys[i]);
}
}
};
/**
* 创建cookies对象
* @param {Object} options
*/
function singletenCookie(options){
var options = options || {};
var expirDateTime = getNowDateTime() + (options.expirDate * 24 * 3600 * 1000 || 24 * 3600 * 1000);//cookie的默认失效时间 单位为天
var expirD = new Date();
expirD.setTime(expirDateTime);
this.expirDate = expirD;
this.doc = document;//文档对象,操作cookies
extend(this,methods);
return this;
}
/**
* 获取当前时间,单位为毫秒
*/
function getNowDateTime(){
var d = new Date();
return d.getTime();
}
/**
* 暂时没用默认失效时间单位为天
* 获得指定的失效时间
* s是代表秒:20s指20秒
* h是指小时,如12小时则是:12h
* d是天数,30天则:30d
*/
function getSpecificDate(str) {
var str1 = str.substring(str.length-1) * 1;//字符串转数字
var str2 = str.replace(str1,"");
if (str2 == "s") {
return str1 * 1000;
} else if (str2 == "h") {
return str1 * 60 * 60 * 1000;
} else if (str2 == "d") {
return str1 * 24 * 60 * 60 * 1000;
}
}
/**
* 类似继承方法
* @param {Object} destination
* @param {Object} source
*/
function extend(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
}
var _static = {
name : "jCookies",
getInstance : function (options){
if(!instance)
instance = new singletenCookie(options);
return instance;
}
}
return _static;
})();
调用方式
alert(document.cookie);
var cookies = jCookies.getInstance();
cookies.setCookie("test","123","1s");
alert(cookies.getCookie("test"));
//cookies.clearCookies();
alert(document.cookie);