javaScript操作cookit函数

本文介绍了一个JavaScript的Cookie管理工具库,包括获取、设置、清除Cookie及其子Cookie的功能。该工具库支持设置Cookie的有效期、路径、域名和安全属性,提供了一种简单而全面的Cookie管理解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const cookieUtils = {
	get(name){//获取cookie
		let cookies = document.cookie;
			cookie_name = `${encodeURIComponent(name)}=`,
			cookie_start = cookies.indexOf(cookie_name),
			cookie_value = null;
		if(cookie_start > -1){
			let cookie_end = cookies.indexOf(";",cookie_start);
			if(cookie_end == -1){
				cookie_end = cookies.length;
			}
			cookie_value = decodeURIComponent(cookies.substring(cookie_start+cookie_name.length,cookie_end));
		}
		return cookie_value;
	},
	set(name,value,expires,path,domain,secure){//设置cookie
		let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
		if(expires instanceof Date){
			cookie += `;expries=${expires.toGMTString()}`;
		}
		if(path){
			cookie += `;path=${path}`
		}
		if(domain){
			cookie += `;domain=${domain}`
		}
		if(secure){
			cookie += `;secure`
		}
		document.cookie = cookie;
	},
	cleart(name,path,domain,secure){//清除cookie
		this.set(name,"",new Date(0),path,domain,secure);
	},
	/*子cookie的格式为:name=name1=value1&name2=value2.....(其余格式如cookie)*/
	subGet(name,subName){//获取单个子cookie
		let sub_cookies = this.subGetAll(name);
		if(sub_cookies){
			return sub_cookies[subName];
		}else{
			return null;
		}
	},
	subGetAll(name){//获取所有子cookie,并进行序列化为对象
		let cookie_value = this.get(name);
		if(cookie_value){
			let sub_cookies = cookie_value.split("&"),result = Object.create(null);
			sub_cookies.forEach(item=>{
				let parts = item.split("=");
				result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
			})
			return result;
		}else{
			return null;
		}
	},
	subSet(name,subName,value,expries,path,domain,secure){//写入单个子cookie
		let sub_cookies = this.subGetAll(name) || Object.create(null);
		sub_cookies[subName] = value;
		this.subSetAll(name,sub_cookies,expires,path,domain,secure);
	},
	subSetAll(name,subcookies,expires,path,domain,secure){//写入所有子cookie
		let value = "",sub_arr = [];
		for(let sub_name in subcookies){
			if(sub_name.length > 0 && subcookies.hasOwnProperty(sub_name)){
				sub_arr.push(`${sub_name}=${subcookies[sub_name]}`);
			}
		};
		if(sub_arr.length > 0){
			value = sub_arr.join("&");
			this.set(name,value,expires,path,domain,secure);
		}else{
			this.cleart(name,path,domain,secure);
		}
	},
	subUnset(name,subName,path,domain,secure){//删除单个子cookie,删除所有cookie使用cleart
		let subcookies = this.subGetAll(name);
		if(subcookies){
			delete subcookies[subName];
			this.subSetAll(name,subcookies,null,path,domain,secure);
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值