在纯javascript中读取cookie(对象)

在纯javascript中读取cookie(对象),javascript,cookies,Javascript,Cookies,我正在尝试仅用纯javascript读取cookie。我没有使用任何jquerycookie库 我的饼干是这样的: var task_cookie = { task1 : getTask('task1') , task2 : getTask('task2') , task3: getTask('task3') , task4: getTask('task4

我正在尝试仅用纯javascript读取cookie。我没有使用任何jquerycookie库

我的饼干是这样的:

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的值

我在stackoverflow上找到了这个代码

function read_cookie(name) {
 var result = document.cookie.match(new RegExp(name + '=([^;]+)'));
 result && (result = JSON.parse(result[1]));
 return result;
}
但是这会给我整个任务cookie,但是我想获取任务cookie中的每个键值。我想要这样的东西:

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

然而,在我严格化之后,在jquery中这是非常容易的。但出于某种原因,我需要使用纯javascript。如何获取task\u 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"));

函数将返回整个对象,因此您可以从函数中选择单个cookie:

read_cookie('task_cookie')['task1'];
或者类似的东西。上面只返回
task1
,但您可以遍历所有任务

更好的是,您可以将
read\u cookie
函数设置为对象方法,只需将cookie对象返回到父对象的属性即可

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

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

既然你要把它串起来,我很确定你必须把完整的物体拿回来,但是你可以从中得到单独的部分。另外,如果你要使用多个部分,我认为它会更快,因为只需要一个解析。你说的“如果你要使用多个部分”到底是什么意思?