2017-04-08 7 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 

この機能を理解できます。メソッド呼び出しパターン

しかし、なぜ2番目のコールの結果が3であるのか理解できないのですか?私の頭の過程2.

はこのように見ているべきであるつながるので、私の心の中で :

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

そして、私の意見では結果は2でなければなりませんが、何が3 instandことが理由です。

+1

オブジェクトの 'value'はインクリメントの最初の呼び出しで増加したので、' myObject.increment(2) 'が'実行される。 –

+0

ありがとうございます...オブジェクトが最初の呼び出し後に彼の価値を覚えているかどうかはわかりませんでした。 – David

答えて

0

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

単一のJSONとしてそれを考えてください次に、あなたが今、あなたはこの

myObject.increment(2); 
document.writeln(myObject.value); //3 
を呼び出す

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

としてオブジェクトを更新

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

と呼ばれます

これで3となるでしょう

+0

ありがとうございます...最初の呼び出し後にオブジェクトが彼の値を覚えているかどうかはわかりませんでした。 – David

関連する問題