オブジェクトメソッドで setTimeout を使ったり、オブジェクトメソッドを渡すような場合、“this を失う” という既知の問題があります。
突然、this が正しく動作するのをやめます。この状況は初心者の開発者には典型的ですが、経験者でも同様に起こりえます。
“this” を失う
私たちはすでに、JavaScriptでは this を失うことが容易であることを知っています。 あるメソッドがオブジェクトから別の場所に渡されると、this は失われます。
ここで setTimeout を利用してどのように起こるのかを示します: