2016-11-16 66 views
-2

我有一個計數方法及其打印一堆的人到控制檯,而不是添加1至NUM財產例如,如果我過去的1到說法我將通過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); 
得到100分的人,而不是1
+3

你不重新分配'this.num' –

+0

什麼是*目標*? – Mritunjay

+1

添加這個'this.num = num'後再行'NUM +' –

回答

2

它不能正常工作,因爲你正在改變局部變量num的價值,而不是實例變量this.num,所以for循環this.num的每次迭代等於0。由於這個數字是一個值類型,它不會被引用傳遞。一個簡單的修復可以實現:

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'場之前宣佈這個for循環'讓NUM = this.num;'。 – Mritunjay

相關問題