function setCookie(key, val, expires) {
let now = new Date()
now.setMinutes(now.getMinutes() + expires)
document.cookie = `${key}= ${val};expires=` + now.toUTCString()
}
然后封装一个删除cookie的代码
function removeCookies(key) {
setCookie(key, null, -1)
}
最后设置一个获取cookie的代码
function getCookie(key) {
let obj = {}
document.cookie.split('; ').forEach(r => {
let kv = r.split('=')
obj[kv[0]] = kv[1]
})
if (key) return obj[key]
return obj
}
console.log(getCookie());
然后你就被阿里录取了
但是就在此时你发现了一个bug,就是无法传字符串或者对象
所以我们做个小更改,在创建cookie的时候先做个判断
function setCookie(key, val, expires) {
if (typeof val === 'object')
val = JSON.stringify(val)
let now = new Date()
now.setMinutes(now.getMinutes() + expires)
document.cookie = `${key}= ${val};expires=` + now.toUTCString()
}
在获取cookie时也做个判断
function getCookie(key) {
let obj = {}
document.cookie.split('; ').forEach(r => {
let kv = r.split('=')
let res = null
let val = decodeURI(kv[1])
try {
res = JSON.parse(val)
} catch (error) {
res = val
}
obj[kv[0]] = res
})
if (key) return obj[key]
return obj
}