Javascript object.value returns 未定义
Javascript object.value returns undefined
在我的一个 javascript 中,我有一个包含当前保存的所有 cookie 的对象。该对象通过以下方式获得:
var cookies = document.cookie.split(";").
map(function(el){ return el.split("="); }).
reduce(function(prev,cur){ prev[cur[0]] = cur[1]; return prev },{});
之后我读取cookie对象如下:
console.log(cookies);
var json = cookies['tracks'];
console.log(json);
控制台输出看起来像一个普通的 javascript 对象:
Object { PHPSESSID: "e964d0b67bbabd149906473b6b2183d5",
tracks: "%7B%22test%22%3A%22tested%22%2C%2223%22%3A%22ert%22%7D" }
undefined
然而,变量 JSON 仍然未定义,无论我使用 cookies.tracks
还是 cookies["tracks"]
或者我使用哪个浏览器,或者我是否尝试检查 PHPSESSID
cookie 或 tracks
cookie。知道为什么会这样吗?
我知道之前有人问过类似的问题,但是,none 给出的答案适用于此案例。
由于 split()
.
,您可能 运行 遇到密钥中额外 space 的问题
当您拆分“;”时,您的键值前面将有一个前缀 space,这将在您的其余处理过程中继续进行。如果您在 Firebug 中查看 "cookies" 对象的 DOM 版本,请右键单击 tracks
,然后单击 "Copy Path",然后粘贴结果,我是愿意打赌你会看到这个:[" tracks"]
.
要解决,您可以在您的逻辑中的某个地方 trim space,或者使用 cookies[" tracks"]
.
引用 属性
在我的一个 javascript 中,我有一个包含当前保存的所有 cookie 的对象。该对象通过以下方式获得:
var cookies = document.cookie.split(";").
map(function(el){ return el.split("="); }).
reduce(function(prev,cur){ prev[cur[0]] = cur[1]; return prev },{});
之后我读取cookie对象如下:
console.log(cookies);
var json = cookies['tracks'];
console.log(json);
控制台输出看起来像一个普通的 javascript 对象:
Object { PHPSESSID: "e964d0b67bbabd149906473b6b2183d5",
tracks: "%7B%22test%22%3A%22tested%22%2C%2223%22%3A%22ert%22%7D" }
undefined
然而,变量 JSON 仍然未定义,无论我使用 cookies.tracks
还是 cookies["tracks"]
或者我使用哪个浏览器,或者我是否尝试检查 PHPSESSID
cookie 或 tracks
cookie。知道为什么会这样吗?
我知道之前有人问过类似的问题,但是,none 给出的答案适用于此案例。
由于 split()
.
当您拆分“;”时,您的键值前面将有一个前缀 space,这将在您的其余处理过程中继续进行。如果您在 Firebug 中查看 "cookies" 对象的 DOM 版本,请右键单击 tracks
,然后单击 "Copy Path",然后粘贴结果,我是愿意打赌你会看到这个:[" tracks"]
.
要解决,您可以在您的逻辑中的某个地方 trim space,或者使用 cookies[" tracks"]
.