2013-12-19 3 views
0

8.6.1 sec.에서 명명 된 접근 자 속성의 특성이 제공됩니다.명명 된 접근 자 속성 특성 이해

var o=Object.create({},{bar:{get: function(){ return 10;}, 
          set: function(value){ console.log("o.bar is", value)}}}) 
o.bar=550; 

과 같이 명명 된 접근 자 속성을 만들겠습니다. 괜찮습니다. 콘솔에는 o.bar is 550이 있습니다. 하지만 몇 가지 의구심이 있습니다. 명명 된 접근 자 속성에는 value 특성이 없습니다. 그러면 어떤 속성이 550에 할당됩니까?

어떻게이 할당 값을 반환 할 수 있습니까? 나는 다음과 같은 get 기능 등 재 작성하기 위해 노력하고있어 :

get: function(){ return value;} 

하지만이 오류 :

[15:59:41.418] ReferenceError: value is not defined @ http://fiddle.jshell.net/_display/:26 

속성 작품이라는 접근 방법을 설명해주십시오?

답변

1

Named accesor property doesn't have value attribute. So which attribute is assigned to 550?

없음, 설정자에서 설정해야합니다. 자동으로 처리되지 않습니다.

How we can return this assigned value?

어디에서 저장했는지. 예를 들어, (나는 명확성을 위해 여러 줄에 넣어 것)이 에 대한 폐쇄를 사용하는 것이 매우 일반적입니다 :

var o=Object.create({},(function() { 
    var _bar = 10; 

    return { 
     bar:{ 
     get: function(){ 
      return _bar; 
     }, 
     set: function(value){ 
      _bar = value; 
      console.log("bar set to " + _bar); 
     } 
     } 
    }; 
})()); 
o.bar=550; 
console.log("o.bar = " + o.bar); 

Live Example | :-)

var o=Object.create({},(function() { 
    var _bar = 10; 

    return {bar:{get: function(){ return _bar; }, 
       set: function(value){ _bar = value; console.log("bar set to " + _bar); }}}; 
})()); 
o.bar=550; 
console.log("o.bar = " + o.bar); 
: Source

응축 버전 당신은 그런 종류의 물건에 있다면