2016-06-28 5 views
0

私はゲッター&セッターをプロトタイプパターン内で使用したいと思います。私はObject.definePropertyをコンストラクタに入れてこれを行いました。ゲッターとセッターのプロトタイプパターン

私はちょうど私が本当のゲッター/セッター

てプロパティにアクセスするしかし、これにはないようにプロトタイプオブジェクト外のDefinePropertyを持つの簡潔さが好きで、プロトタイプオブジェクトでgetWhatever()メソッドを作成することができることを知っています私にはうってつけです。より良い方法がありますか?

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

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

plunk: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

ああ、私はOPのコンストラクタ関数をC&Pしませんでした – jusopi

+0

しかし、人は 'personObject._name = 'blah''という名前を上書きすることはできませんか? – Neal

関連する問題