2017-04-08 52 views
0
var myObject = { 
    value: 0, 
    increment: function (inc) { 
     this.value += typeof inc === 'number' ? inc : 1; 
    } 
}; 


myObject.increment(); 
document.writeln(myObject.value); //1 

myObject.increment(2); 
document.writeln(myObject.value); //3 

我可以理解這個函數。方法調用模式

但我很難理解爲什麼第二次調用的結果是3? 因爲在我心裏,結果應該是2

在我的腦海過程看起來像這樣:

var myObject = { 
    value:0, 
    increment: function(2){ 
     0 += 2;} 
}; 

,並導致在我看來應該是2,但什麼是有理由3 instand。

+1

對象的'value'由於第一次調用增加而增加,所以當'myObject.increment(2)'時'1'而不是'0'被執行。 –

+0

謝謝......我不確定對象在第一次調用後是否記得他的價值。 – David

回答

0

請認爲它作爲一個JSON

var myObject = { 
     value: 0, 
     increment: function (inc) { 
      this.value += typeof inc === 'number' ? inc : 1; 
} }; 

然後你叫

myObject.increment(); 
document.writeln(myObject.value); //1 

有哪些更新的對象

var myObject = { 
     value: 1, 
     increment: function (inc) { 
      this.value += typeof inc === 'number' ? inc : 1; 
} }; 

現在你罵這個

myObject.increment(2); 
document.writeln(myObject.value); //3 

所以現在它將如預期的那樣3

+0

謝謝......我不確定在第一次調用後對象是否記得他的值。 – David