2016-05-27 15 views
-3

thisの仕組みを完全に理解していません。例えば、今`this`はJavascriptでどのように動作しますか?

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

は、私が読んだから、updateCountloggerのプロパティとして呼ばれthisの値はloggerでなければなりません。では、なぜ以下のコードは動作しないのですか?

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

また、これはなぜ機能しますか?

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

});

+0

はここで読むようにしてください://developer.mozilla:http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ – PaolaG

+0

開発者に対し、[ここ](httpsを読みました。 org/en-US/docs/Web/JavaScript/Reference/Operators/this)を参照してください。 –

答えて

0

最初の関数では、関数をパラメータとして渡しており、そこでは関数が呼び出されます。したがって、呼び出し元はロガーではありません。そして、「これ」は発信者によって異なります。もう1つは、ロガーから関数を呼び出すため、「this」はロガーです。

"this"がロガーとして設定されるように、最初のものを次のように変更できます。

document.querySelector('button').addEventListener('click', logger.updateCount.bind(logger)); 
関連する問題