用JavaScript封装cookie函数,删除指定name属性的cookie,获取指定name属性的cookie

1.新增cookie

写一个set函数,调用函数时传入name,value,max-age等值来创建一个cookie。

用到了对象的解构赋值,函数的默认值等前置知识点。

const set=(name,value,{maxAge,domain,path,secure}={})=>{
    //为了输入非法的字符串,此时可以用encodeURIComponent进行编码
    let cookieText=`${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
    if(typeof maxAge==="number"){
        cookieText+=`; max-age=${maxAge}`;
    }
    //判断是否传了domain
    if(domain){
        cookieText+=`; domain=${domain}`;
    }
    if(path){
        cookieText+=`; path=${path}`;
    }
    if(secure){
        cookieText+=`; secure`;
    }
    document.cookie=cookieText;
};

调用函数

set('user','alex',{maxAge:5});
set('用户名','蒂娜');

2.获取cookie

通过cookie的name属性获取对应的value值。非常机智地用有格律的分隔符将cookie字符串分割为了数组。

document.cookie会获取类似如下的字符串:

// username=alex; age=18; gender=male
const get=(name)=>{
    //预防传入的中文,先用encodeURI进行编码
    name=encodeURIComponent(name);
    // 把分号+空格作为分隔符,将cookie分割为数组
    const cookies= document.cookie.split('; ');
    // ["username=alex", "age=18", "gender=male"]
    //再将上面的得到的数组用等号分割为数组
    for(let item of cookies){
        let [cookieName,cookieValue]=item.split('=');
        if(cookieName===name){
            //解码
            return decodeURIComponent(cookieValue);
        }
    }
    return;
};

调用封装的set和get函数:

set('user','alex',{maxAge:5});
set('用户名','蒂娜');
console.log(get('用户名')); //蒂娜
console.log(get('user')); //alex

3.删除指定cookie

一条cookie得要有name、domain、path三个属性值才能确定,因此要根据name、domain、path删除cookie。此时调用了前面封装好的set函数修改某个cookie的max-age为-1,当max-age的值为0或负数的时候会删除cookie。

const remove=(name,{domain,path}={})=>{
    //当max-age的值为0或负数的时候会删除cookie
    set(name,"",{domain,path,maxAge:-1});
};
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值