Javascript对象中的动态值?

时间:2014-04-08 03:41:46

标签: javascript json

我有一个如下对象

var obj={
   userName:sessionStorage["userName"]
}

如果我第一次尝试访问obj.userName我会得到未定义,因为它没有任何价值。

现在,如果我在设置值

后仍未定义
sessionStorage["userName"]="name";
obj.userName;  //undefined

如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

userName在创建时获取sessionStorage["userName"]的值。以后对sessionStorage["userName"]的更改不会反映在userName

如果您想从sessionStorage["userName"]获得价值时获得userName,那么您需要定义一个getter,就像这样

Object.defineProperties(obj, {
    userName: {
        get: function() {
            return sessionStorage["userName"];
        }
    }
});

答案 1 :(得分:0)

你应该这样做:

sessionStorage["userName"]="name";
obj.userName = sessionStorage["userName"];
obj.userName;//name

仅更改sessionStorage的值并不反映对象本身的更改。

要更改对象,您需要实际更改对象。