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

Ich kann diese Funktion verstehen.Methode Aufrufmuster

Aber ich habe Schwierigkeiten zu verstehen, warum das Ergebnis des zweiten Anrufs 3 ist?

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

und das Ergebnis meiner Meinung nach 2 sein, aber was ist Grund sollte 3 Instand zu sein: Weil in meinem Kopf, dass 2.

In meinem Kopf Prozess wie dieser ist auf der Suche sein sollte zur Folge hat.

+1

Der 'Wert' des Objekts wurde durch den ersten Aufruf erhöht, so ist es' 1' und nicht '0' wenn' myObject.increment (2) ' wird ausgeführt. –

+0

Danke ... Ich war mir nicht sicher, ob sich das Objekt nach dem ersten Aufruf an seinen Wert erinnern würde. – David

Antwort

0

Bitte denken sie als Einzel json

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

Sie dann

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

aktualisierenden Objekt als

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

Jetzt genannt rufen Sie das

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

so jetzt wird es 3 wie erwartet

+0

Danke ... Ich war mir nicht sicher, ob das Objekt sich nach dem ersten Aufruf an seinen Wert erinnert. – David

Verwandte Themen