le.tuan.anh

2018.04.17

javascriptのthisのロジック

おひさしぶりです。アインです。今日はthisのロジックを説明します

最初に、このコードサンプルを一緒に見てみましょう。

このコードを実装すると結果は

今回はさっきのObjectはFunctionの中に実装してみると

今回のコードを実装すると、

これの原因は、オブジェクトのメッソドを コピーする時 とか、関数に渡す時 とか、 オブジェクトバインディングをなくなります。ほとんどの場合、this の値は、関数の呼ばれ方によって決定されます。これは実行時に割り当てできず、関数が呼び出されるたびに異なる可能性があります。

オブジェクトがない場合、変数を呼ばれると、thisはなくなります,代わりにwindowを使われます。

また、関数に渡す時も

あなたが関数を呼び出していないときは、それはあまり明白になりません。JavascriptにはいろいろAPIは渡した変数を呼ばれてくれます。例えばArray.forEach, setTimeout

治し方

書き直すは複数の方法がありますが、bindのfunctionを使うならいいです