2016-05-27 9 views
-3

Ich verstehe nicht vollständig, wie this funktioniert. Zum BeispielWie funktioniert `this` in Javascript?

var logger = { 
x: 0, 
updateCount: function(){ 
    this.x++; 
    console.log(this.x); 
    } 
} 

nun von dem, was ich gelesen habe, ist der Wert von this wenn updateCount als Eigenschaft logger genannt wird, soll logger sein. Warum funktioniert der folgende Code nicht?

document.querySelector('button').addEventListener('click', logger.updateCount); 

Auch, warum funktioniert das?

document.querySelector('button').addEventListener('click', function(){ 
logger.updateCount(); 

});

+0

Versuch hier zu lesen: http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ – PaolaG

+0

Developper Lesen Sie [hier] (https: //developer.mozilla. org/de-DE/docs/Web/JavaScript/Referenz/Operatoren/dies). –

Antwort

0

In der ersten übergeben Sie eine Funktion als Parameter, und sie wird dort aufgerufen. Daher wird der Anrufer nicht Logger sein. Und "das" hängt vom Anrufer ab. Auf der zweiten, wie Sie sehen können, rufen Sie die Funktion vom Logger auf, also "das" ist Logger.

Sie können die erste wie folgt ändern, so dass ihr "dies" als Logger eingestellt ist.

document.querySelector('button').addEventListener('click', logger.updateCount.bind(logger));