-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcookie模拟localStorage.html
More file actions
95 lines (81 loc) · 2.55 KB
/
cookie模拟localStorage.html
File metadata and controls
95 lines (81 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>localStorage</title>
</head>
<body>
</body>
<script>
function setCookie(key, value = '', days = 0) {
if (!key) return
let date = new Date()
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); // 设置过期时间为 days 天之后
document.cookie = key + "=" + encodeURIComponent(value) + ";expires=" + date.toUTCString();
}
function getCookie(key) {
let value = ''
let cookie = document.cookie + ";"
let queryString = key + "="
let start = cookie.indexOf(queryString)
if (start > -1) {
start += queryString.length
let end = cookie.indexOf(";", start)
value = decodeURIComponent(cookie.substring(start, end));
}
// return getCookies()[key]
return value
}
function getCookies() {
let result = {}
if (!document.cookie) return result
document.cookie.split(';').forEach((item) => {
if (item.indexOf('=') > -1) {
let [key, value] = item.split('=')
result[key.trim()] = decodeURIComponent(value.trim());
}
})
return result
}
window.localStorage = new LocalStorage()
function LocalStorage() {
const cookies = getCookies()
this.length = Object.keys(cookies).length
for (let [key, value] of Object.entries(cookies)) {
this[key] = value
}
}
LocalStorage.prototype = function () {
function getItem(key) {
return getCookie(key);
}
function setItem(key, value, days) {
this[key] = value
this.length++
setCookie(key, value, days)
}
function removeItem(key) {
this.length--
delete this[key]
setItem(key, '', -1);
}
function clear() {
const cookies = getCookies();
for (let key of Object.keys(cookies)) {
removeItem(key);
}
this.length = 0
}
return {
constructor: LocalStorage,
getItem,
setItem,
removeItem,
clear,
}
}()
console.log(document.cookie, window.localStorage)
</script>
</html>