无法访问Javascript对象的字段

时间:2011-09-27 21:58:47

标签: javascript

以下Javascript函数返回一个JS对象:

function getCookies() {
    var result = {};
    var cookie = {};
    var cookies = document.cookie.split(';');
    for (var i = 0; i < cookies.length; i++) {
        cookie = cookies[i].split('=');
        result[cookie[0]] = cookie[1];
    }
    return result;
}

当我尝试以“简单”的方式访问其字段时,我得到的只是“未定义”,例如:

var c = getCookies();
alert(c.a_cookie_name);
alert(c['a_cookie_name']);

我可以访问键和值的唯一方法是迭代字段,例如:

for(cookieName in c){
  alert(c[cookieName]);
}

问题是如何在不迭代的情况下访问字段?

谢谢。

P.S。密钥和值确实存在,我可以在Chrome中看到console.log(getCookies())的对象字段。

1 个答案:

答案 0 :(得分:3)

您正在正确访问字段,问题是您正在访问的字段不存在。它看起来好像名为a_cookie_name的属性在对象上不存在。

修改

鉴于Chrome控制台将属性显示为现有属性,可以考虑的是属性名称中有空格。这可以解释差异,因为在控制台中很难看到空白区域。要测试它,请尝试以下方法。如果它们在那里,它将使空间更加可见

for (var cookieName in c) {
  alert('"' + cookieName + '"="' + c[cookieName] + '"');
}