我有一个如下对象
var obj={
userName:sessionStorage["userName"]
}
如果我第一次尝试访问obj.userName
我会得到未定义,因为它没有任何价值。
现在,如果我在设置值
后仍未定义sessionStorage["userName"]="name";
obj.userName; //undefined
如何解决这个问题?
答案 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
的值并不反映对象本身的更改。
要更改对象,您需要实际更改对象。