2014-04-08 4 views
1

나는이 거기에 값이 없기 때문에 내가, 내가 정의되지 않은 얻고 obj.userName에 액세스하려고하면Javascript 개체의 동적 값?

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

1 시간을 다음과 같은 객체입니다.

는 지금은 심지어

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

어떻게이 문제를 해결하기 위해 값을 설정 한 후 정의되지 않은 무엇입니까면?

답변

4

userName는 생성시 sessionStorage["userName"]의 값을 취한다. 나중에 sessionStorage["userName"]으로 변경하면 userName에 반영되지 않습니다.

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

그냥 값을 변경 : 당신은 당신이 userName에서 가치를 얻을 때마다 sessionStorage["userName"]를 얻고 싶다면이

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

잘 빠르다. +1 – aIKid

+0

이 문제의 해결책은 있습니까? – user3191903

+0

@ user3191903 업데이트 된 답변을 확인하십시오. – thefourtheye

0

당신은이 작업을 수행해야처럼

, 당신은 게터를 정의 할 필요가 sessionStorage의 변경 내용은 개체 자체의 변경 내용을 반영하지 않습니다.

개체를 변경하려면 실제로 개체를 변경해야합니다.