2016-06-28 83 views
0

我想在原型中使用吸氣器&吸氣器。我通過在構造函數中放入Object.defineProperty來做到這一點。原型中的吸氣器和吸氣器

我知道我可以只創建getWhatever()的原型對象的方法,通過我想通過真正的getter/setter方法

訪問屬性而具有defineProperty原型對象以外的簡潔這樣不對我感覺很好。有沒有更好的辦法?

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

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

的普拉克:https://plnkr.co/edit/h3tgJjQBGspepdho3lqJ?p=preview

+1

爲什麼不直接定義吸氣的原型構造函數外:'Object.defineProperty(Person.prototype的, '名',{...});' – 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

啊好,我沒有c&p的OP的構造函數 – jusopi

+0

但是,然後不能一個人'personObject._name ='blah''來覆蓋名字? – Neal