js被C#、JAVA等开发者视为声名狼藉的附属编程语言是有道理的,比如说,对cookie的操作。js就没有一套类似C#的现成处理方案,而只能由你自己去完成。下面我就将自己学习的用面向对象的思想对cookie进行处理的学习笔记整理一下,以飨读者。
cookie的常见操作分析:
(1)设置cookie 包括了添加和修改功能,事实上如果原有cookie 名称已经存在,那么添加此cookie 就相当于修改了此cookie。在设置cookie 的时候可能还会有一些可选项,用于指cookie  的声明周期、访问路径以及访问域和安全性等等。为了让cookie 中能够存储中文,该方法中还需要对存储的值进行编码。 
(2)取一个cookie的值,该方法接收cookie 名称为参数,返回该cookie 的值。因为在存储该值的时候已经进行了编码,所以取值时应该能自动解码,然后返回(这里其实可以自己设置返回什么,而不单单是"取一个值"而已)。
(3)删除一个cookie,删除cookie 只需将一个cookie 的过期事件设置为过去的一个时间即可,它接收一个cookie 的名称为参数,从而删除此cookie(我的实现还将cookie名称设置为空,这是考虑到今后可能会有多个cookie要设置的时候,名称发生冲突的情况)。
(4)其他 (这里让读者自己去考虑其他的操作,不赘述了。)
好的,你一定又猜到我要说什么了,对头,code is cheap.看代码:

(sName, sValue, oExpires, sPath, sDomain, bSecure) {
    var sCookie = sName + "=" + escape(sValue);  // 名称和值
    if (oExpires) {
        sCookie 
+= "; expires=" + oExpires.toGMTString(); // 过期时间
    }
    
if (sPath) {
        sCookie 
+= "; path=" + sPath; // 访问路径
    }
    
if (sDomain) {
        sCookie 
+= "; domain=" + sDomain; // 访问路径
    }
    
if (bSecure) {
        sCookie 
+= "; true"// 安全性
    }
    document.cookie 
= sCookie;
}

//获取

Cookie.getCookie 
= function(sName) {
    
var cookieArray = document.cookie.split(";"); //得到分割的名值对
    var tempCookie = new Object();
    
for (var i = 0; i < cookieArray.length; i++) {
        
var tempArr = cookieArray[i].split("="); //将名称和值分开
        if (tempArr[0== sName) { //如果是指定的cookie,返回它的值
            return unescape(tempArr[1]);
        }
    }
    
return "There's no such a cookie name!";
}

//删除
Cookie.deleteCookie = function(sName, sPath, sDomain) {
    
var sCookie = sName + "=; expires=" + (new Date(0)).toGMTString(); // 设置名称为空,过期时间为0,也可以设置过期时间为负数 (var sCookie = sName + "=; expires=-1"; )
    if (sPath) {
        sCookie 
+= "; path=" + sPath;
    }

    
if (sDomain) {
        sCookie 
+= "; domain=" + sDomain;
    }

    document.cookie 
= sCookie;
}


function test() {
    Cookie.setCookie(
"test""cookieTest");
    alert(Cookie.getCookie(
"test"));
    alert(Cookie.getCookie(
"test2")); // ???
    Cookie.deleteCookie("test");
    alert(Cookie.getCookie(
"test"));

}

最后推荐一篇更好用的cookie操作类的博文,比起下面这位博主的cookie操作类,我这个只能当作初学者稚嫩的入门介绍。详情点击:
http://www.cnblogs.com/birdshover/archive/2008/07/15/1243007.html

相关文章: