2016-11-16 3 views
-2

私は数のプロパティに1を追加するのではなく、countメソッドを持っていて、コンソールに1の束を印刷します。たとえば、1を引数に渡した場合、1から100ではなく100を得るでしょう。このカウンター方法が正しく機能しない理由は何ですか?

let obj={ 
     num:0, 
     count: function(max){ 
      for(let i=0; i<max; i++){ 
       let num=this.num; 
       num++ 
       console.log(num); 
      } 
     } 
    } 

    obj.count(100); 
+3

「this.num」を再割り当てしません –

+0

*目的*は何ですか? – Mritunjay

+1

'num ++' –

答えて

2

それはとてもforループthis.numの各反復は0に等しく、インスタンス変数this.numを使用すると、ローカル変数numの値を変更しているため、正しく動作していないされていません。数値は値型なので、参照渡しされません。簡単な修正を実装できます:

let obj={ 
    num:0, 
    count: function(max){ 
     for(let i=0; i<max; i++){ 
      this.num++ 
      console.log(this.num); 
     } 
    } 
} 

obj.count(100); 
+1

投稿に加えて、 'num'フィールドを変更したくない場合は、' let num = this.num; 'の前にこれを宣言してください。 – Mritunjay

関連する問題