定义cookie()函数来封装cookie的所有操作
描述:
cookie()函数即可以写入指定的cookie信息,删除指定的cookie信息,同时也能够读取指定名称的cookie值,另外还可以指定cookie信息的有效期、有效路径、作用域和安全性选项设置
- 指定一个参数表示读取指定名称的cookie值
- 指定两个参数,则表示写入cookie信息,第一个参数表示名称,第二个参数表示值
- 第三个参数传递选项信息,以字典形式存储在对象中进行传递。包括有效期、有效路径、有效域和是否加密数据传输
function cookie(name, value, options) {
if (typeof value != "undefined") { //如果第二个参数存在
options = options || {} //初始化选项参数
if (value === null) { //value值为null则删除该cookie的值
value = ""
options.expires = -1
}
//如果存在时间参数,且只类型为number或者为具体时间,分别设置时间
var expires = ''
if (options.expires && (typeof options.expires == 'number' || options.expires.toGMTString)) {
var date = null
if (typeof options.expires == 'number') {
//设置时间格式,把天数转换为毫秒数添加到时间对象中
date = new Date()
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000))
} else { //如果是时间格式则之间传递时间参数
date = options.expires
}
expires = ";expires=" + date.toGMTString() //设置有效期
}
var path = options.path ? ";path=" + options.path : '' //设置路径
var domain = options.domain ? ";domain=" + options.domain : "" //设置域
var secure = options.secure ? ";secure" : '' //设置安全措施,为true则直接设置,否则为空
//把所有字符串信息都存入数组,然后调用join方法转换为字符串,并写入cookie信息
document.cookie = [name, '=', escape(value), expires, path, domain, secure].join('')
} else { //如果第二个参数不存在,则读取指定cookie信息
if (document.cookie && document.cookie != '') {
var strCookie = document.cookie;
var arrCookie = strCookie.split("; "); //分号后面必需有空格,可以输出document.cookie.splite(";")查看
for (var i = 0; i < arrCookie.length; i++) {
var arr = arrCookie[i].split("=");
if (name == arr[0]) {
return unescape(arr[1]);
}
}
return "";
}
}
}
cookie("user", "cc", {
expires: 10, //有效期10天
path: '/', //整个站点有效
})
console.log(cookie("user"))