2016-06-28 4 views
0

getters & 프로토 타입 패턴 내에서 getters를 사용하고 싶습니다. Object.defineProperty를 생성자에 넣음으로써이 작업을 수행했습니다.프로토 타입 패턴의 Getters 및 Setters

은 내가 프로토 타입 객체 외부의 defineProperty를 실제의 getter/setter를

를 통해 속성에 액세스하지만 데의 간결함을 좋아하여이하지 않는 것처럼 난 그냥 getWhatever() 프로토 타입 객체의 메소드를 만들 수 있다는 사실을 알고 내게 맞는 느낌. 더 좋은 방법이 있습니까?

function Person(name) { 
    this._name = name; 

    Object.defineProperty(this, 'name', { 
     get: function() { 
      return this._name; 
     } 
    }); 
} 

쿵하는 소리 : https://plnkr.co/edit/h3tgJjQBGspepdho3lqJ?p=preview

+1

: (Person.prototype, '이름'{...})'Object.defineProperty,' – Teemu

+2

또한'대신 사용 _name' 할 것을 고려 'this._name' 그런 식으로 이름을 바꿀 수 없습니다 :-) – Neal

+0

코드 검토에 속하기 때문에이 질문을 주제로 닫으려고합니다. – Neal

답변

0

왜 프로토 타입 자체에 그것을하지?

function Person(name){ 
    this._name = name; 
} 

Object.defineProperty(Person.prototype, 'name', { 
    get:function(){ return this._name; } 
}) 
단지 생성자 외부의 프로토 타입에 게터를 정의하지 왜
+0

'this._name '은 어디에 정의되어 있습니까? –

+1

아, 좋은 캐치, 나는 OP의 생성자 함수를 C & P하지 않았다. – jusopi

+0

그런 다음 사람이'personObject._name = 'blah''라는 이름을 덮어 쓸 수 없다. – Neal