UNPKG

1.13 kBJavaScriptView Raw
1"use strict";
2
3const emptyString = "";
4
5module.exports = Storage;
6
7function Storage() {
8 const oStorage = {
9 length: 0
10 };
11
12 Object.defineProperty(oStorage, "getItem", {
13 value(key) {
14 return this.hasOwnProperty(key) ? this[key] : null;
15 }
16 });
17
18 Object.defineProperty(oStorage, "setItem", {
19 value(key, value) {
20 if (!key) return;
21 this[key] = emptyString + value;
22 }
23 });
24
25 Object.defineProperty(oStorage, "length", {
26 get() {
27 return Object.keys(this).length - 1;
28 }
29 });
30
31 Object.defineProperty(oStorage, "removeItem", {
32 value(key) {
33 if (!key) return;
34 delete this[key];
35 }
36 });
37
38 Object.defineProperty(oStorage, "key", {
39 value(index) {
40 return Object.keys(oStorage).filter((p) => p !== "length")[index] || null;
41 }
42 });
43
44 Object.defineProperty(oStorage, "clear", {
45 value() {
46 for (const key in this) {
47 if (this.hasOwnProperty(key)) delete this[key];
48 }
49 this.length = 0;
50 }
51 });
52
53 this.value = oStorage;
54 this.writable = true;
55 this.configurable = true;
56 this.enumerable = true;
57
58 return oStorage;
59}