2016-04-27 10 views
2

私は現在Javascriptを学習しており、基本OOPfreecodecampに学習しています。私はこの時点でオブジェクトを作成しています。このオブジェクトを取得して、返すオブジェクトを返そうとしています。自転車のコンストラクタは指定量を出力する代わりに歯車を追加し続けます

このプロジェクトの全体の説明は次のとおりです。

オブジェクトは、独自の属性、プロパティと呼ばれる、と独自の関数と呼ばれる方法があります。

以前の課題では、thisキーワードを使用して、現在のオブジェクトのパブリックプロパティを参照していました。

また、オブジェクトの外部からアクセスできないプライベートプロパティとプライベートメソッドを作成することもできます。

これを行うには、このプロパティをプロパティとして作成するのではなく、わかりやすいvarキーワードを使用してコンストラクタ内に変数を作成します。

これは、オブジェクトに関する情報を格納する必要があるときに、外部コードによってどのように使用されるかを制御したいときに便利です。

たとえば、車の走行速度を保存したいが、外部のコードでアクセラレーションや減速を変更するだけで、速度が制御された形で変わるのはどうだろうか?

このパターンを実装するCarコンストラクタの例をエディタに表示できます。

今すぐお試しください! Bikeコンストラクタを変更して、gearと呼ばれるプライベートプロパティと、その値を取得および設定するためのgetGearおよびsetGearという2つのパブリックメソッドを持つようにします。しかし、私はまた、この自分自身を試してみて、デバッグするnode terminalを使用しています、

は今、私はこれがどのように動作するかの基本的な概念を理解し、私は私がやっている理解しています、私は結論に来ていることプログラムは、一緒たびにギアを追加します

> var Bike = function() { 
... 
... // Only change code below this line. 
... var gear = 0; 
... 
... this.setGear = function(switchGear){ 
...  gear += switchGear; 
... }; 
... 
... this.getGear = function() { 
...  return gear; 
... }; 
... }; 
undefined 
> var myBike = new Bike(); 
undefined 
> myBike.setGear(4); 
undefined 
> myBike.getGear(); 
4 
> myBike.setGear(4); 
undefined 
> myBike.getGear(); 
8 
> 

誰かが私が間違ってここにやっているものを私に説明してくださいことはできますか?それは一緒に加えることだ、なぜ私は理解していない...ありがとう...

出典:

var Bike = function() { 

    // Only change code below this line. 
    var gear = 0; 

    this.setGear = function(switchGear){ 
    gear += switchGear; 
    }; 

    this.getGear = function() { 
    return gear; 
    }; 
}; 

var myBike = new Bike(); 
+3

'+ = '演算子の手段か、「右辺のオペランドの値を追加左側の変数の現在の値に変更し、結果をその変数に格納します。 "あなたのプログラムがそれを伝えているからです。 – Pointy

答えて

5

私は、これはソフトウェアのすべてのバグの真実であると仮定し、しかし、あなたはそれを告げたので、それがことをやっています!

gear + = switchGear;

あなたは、ギアにこの値を追加したと言いました。

編集: OPのコメントは、彼の混乱をより明確にした。

彼はgearの値が何らかの方法で「リセット」してゼロに戻らなければならないと思ったようです。

いいえ、new Bike()が呼び出されると、関数Bikeのステップが1回実行されます。変数gearが存続し、メソッドによって変更された場合にのみ値が変更されます。

+0

それでは、機能が終了した後でもギアを追加し続けるだけですか? – 13aal

+0

いいえ、myBike.setGear()を呼び出すたびに歯車が追加されます。 @ 13aal – Ozrix

+1

@Ozrix大丈夫だよ、ありがとう、6分待たなければならない – 13aal

5
gear += switchGear; 

あなただけの値を設定したい場合は

gear = gear + switchGear; 

に変換し、

gear = switchGear; 
関連する問題