2016-09-10 7 views
1
  1. どのように私の分機能を動作させることができます。私はバンケットを得ていますか?

ありがとうございます。javascriptのプロトタイプとプライベート変数

  1. リスト項目
  2. リスト項目
  3. リストアイテムので、あなたはプロトタイプを使用することができますbanqueためにゲッターを設定されて何ができる

function Personne(nom){ 
 
    this.nom = nom; 
 
    var banque = 1500; 
 
    this.add = function(number){ 
 
    banque = banque + number 
 
    } 
 
    this.getCpte = function() { 
 
    return banque 
 
    } 
 
} 
 

 
Personne.prototype.min = function(number){ 
 
    banque = banque - number 
 
} 
 

 
var me = new Personne('albert') 
 

 

 

 
console.log(me) 
 
me.add(500) 
 
me.min(500) // got banque is undefined 
 
console.log(me.getCpte())

+1

'banque'が...' Personne'機能の外に存在していない – Li357

+0

は、どのように私はそれが存在することができますし、プライベートVARとして、それを維持し、プロトタイプ法を使って? –

答えて

0

。これはすでにgetCpteで行っているようです。その関数を使用してbanqueの値を取得し、プロトタイプ関数の割り当てでそれを使用してください。

function Personne(nom){ 
 
    this.nom = nom; 
 
    var banque = 1500; 
 
    this.add = function(number){ 
 
    banque = banque + number 
 
    } 
 
    this.getCpte = function() { //banque getter 
 
    return banque 
 
    } 
 
    this.setCpte = function(value) { //banque setter 
 
    banque = value; 
 
    } 
 
} 
 

 
Personne.prototype.min = function(number){ 
 
    this.setCpte(this.getCpte() - number) //set to banque - number 
 
} 
 

 
var me = new Personne('albert') 
 

 
console.log(me) 
 
me.add(500) 
 
me.min(500) 
 
console.log(me.getCpte())
:あなたは Personne機能(これは banqueは基本的に公開するだろうこれに対処するには、すべての可能性であれば、コンストラクタで min機能を設定)外の値を変更したい場合は、 banqueのsetterが必要になります

これが何を追加することはbanqueのsetterで機能setCpteです。この方法では、を使用できます。値はbanqueに設定されています。 banque - numberを行ったので、ゲッターを使ってReferenceErrorを取り除き、そこから数を減算することができます。

+1

これは本当に問題を解決するものではなく、 'banque'は" private "かもしれませんが、値は直接設定することができます - どのようにプライベートなのでしょうか?元のコードを '追加 'できますが、' min'が引き分けられた場合と同じですが、値を直接設定することはできませんでした。これは変数が持つ「プライバシー」の範囲です。あなたはsetCpte関数にロジックを設定して設定値を消毒することができたと思いますが、これはあなたが得ているすべてのことです。 –

+0

@JaromandaX注意すべき大きな注意点ですが、わかりませんOPをプロトタイプに設定しようとすると他の方法があります。 'Personne'関数で設定することをお勧めします。 – Li357

1

banqueは、Personneのローカル変数であり、外部からアクセスすることはできません。 minをコンストラクタの中に入れて、他のメソッドと同様に特権メソッドにするか、banque.nomのようなプロパティを設定します。

それともaddメソッドを介してすべての操作を行います。

Personne.prototype.min = function(number) { 
    this.add(-number); 
}; 
関連する問題