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

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

本文关键字:一个对象 cookie javascript 中的 读取      更新时间:2024-04-16

我正在尝试仅用纯javascript读取cookie。我没有使用任何jquery 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的值

我在stackoverflow 上发现了这个代码

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

但这会给我整个task_cookie。不过,我想获取task_cookee中的每个键值。我想要这样的东西:

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

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

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

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

或者类似的东西。上面的内容只返回task1,但您可以遍历所有任务。

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

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

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

因此,在获得对象后,从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"));