对于很多新手来说,cookie的添加、删除、更新等等都是很迷糊的。确实,Cookie里众多的参数让人望而生畏,包括我在内,有时候都会为Cookie这恼人的操作而烦恼。鉴于本人的性格呢,是喜欢化复杂为简单,化抽象为具体的。所以我也就对cookie的一连串的操作进行了封装,而无需为cookie的实际操作而烦恼了,下面是它的一个Example:
[javascript]
//Example:
var cookie = new Cookie("sha", "Hello;; ,sha");
//调用addCookie方法写入cookie
cookie.addCookie();
//调用getCookie方法读取cookie
alert(cookie.getCookie());
//调用updateCookie方法更新cookie
cookie.updateCookie("Update Cookie is successsful.")
alert(cookie.getCookie());
[/javascript]
上面的操作简单明了,虽然算不上好与不好,至少减少了我以后操作cookie的烦恼吧。下面提供Cookie类的源码:
[javascript]
/**
* @param {Cookie} name
* @param {Cookie} value
* @param {Cookie} expire : cookie过期时间,以小时为单位
* @param {Cookie} path : 指定可访问cookie的路径
* @param {Cookie} domain : 指定可访问cookie的主机名
*/
var Cookie = function(name, value, expire, path, domain){
this.name = name;
this.value = value;
this.expire = expire || null;
this.path = path || null;
this.domain = domain || null;
}
Cookie.prototype.addCookie = function(){
var cookieString = this.name + "=" + escape(this.value);
if (this.expire) {
var date = new Date();
date.setTime(date.getTime + this.expire * 60 * 60 * 1000);
cookieString += "; expires=" + date.toGMTString();
}
if (this.path) {
cookieString += "; path=" + this.path;
}
if (this.domain) {
cookieString += "; domain=" + this.domain;
}
document.cookie = cookieString;
}
Cookie.prototype.getCookie = function(){
if (new RegExp(this.name + "=([^;]*)").test(document.cookie)) {
return unescape(RegExp.$1);
}
return "";
}
//Update cookie’s value only.
Cookie.prototype.updateCookie = function(value){
if (new RegExp(this.name + "=([^;]*)").test(document.cookie)) {
document.cookie = document.cookie.replace(RegExp.$1, value);
}
}
Cookie.prototype.deleteCookie = function(){
document.cookie = this.name + "=v; expires=FRI,02-Jan-1970 00:00:00 GMT";
}
[/javascript]
明明是”化具体为抽象”嘛….