以纯 javascript 读取 cookie(这是一个对象)

Reading a cookie(which is an object) in pure javascript

我正在尝试仅以 javascript 格式读取 cookie。我没有使用任何 jquery cookie 库。

这是我的 cookie 的样子:

var task_cookie = {
                   task1 : getTask('task1') 
                 , task2 : getTask('task2')
                 , task3: getTask('task3')
                 , task4: getTask('task4') 
                 , task5: getTask('task5')                  
 };

document.cookie = "task_cookie=" + JSON.stringify(task_cookie)+";path=/;domain=.task.com";

现在,我试图稍后在另一个页面上读取 task_cookie 的值

我在 Whosebug 上找到了这段代码

function read_cookie(name) {
 var result = document.cookie.match(new RegExp(name + '=([^;]+)'));
 result && (result = JSON.parse(result[1]));
 return result;
}

但这会给我整个 task_cookie.I 但是我想获取 task_cookie 中的每个键值。我想要这样的东西:

$.cookie('task1')
$.cookie('task2')

然而,在我进行字符串化后,这在 jquery 中非常容易。但出于某种原因,我需要使用纯 javascript。如何获取 task_cookie 对象内的 task1 、 task2 等的各个值?我很难弄明白这一点:/

所以在获取对象后从cookie中读取值。

function read_cookie(name) {
 var result = document.cookie.match(new RegExp('tasj_cookie=([^;]+)'));
 result && (result = JSON.parse(result[1]));
 return result ? result[name] : null;
}

更好的是,使用本地存储而不是 cookie。

localstorage.setItem("task1", getTask('task1'));


function read_storage (name) {
    return localstorage.getItem(name);  //might need to use JSON.parse() depending on the data
}
console.log(read_storage("task1"));

该函数 return 处理整个对象,因此您可以 select 来自该函数的单个 cookie:

read_cookie('task_cookie')['task1'];

或类似的东西。以上只是 return task1,但您可以遍历所有任务。

更好的是,您可以将 read_cookie 函数设为一个对象方法,并将 cookie 对象 return 设为父对象的 属性。

var cookieHandler = {
    get: function(name) {
        //code to get cookies 
        //push to cookies array 
    },
    cookies: []
};

这样您就不必在每次迭代任务时都为全局函数创建一堆实例。