今日、Javascriptでオブジェクトのメソッドを関数として渡すと、かなり奇妙な動作が発生することがわかりました。
setTimeout(myObject.test, 100); // "this" is the global object window
メソッド「test」は正しく呼び出されますが、「this」はオブジェクト「myObject」ではなく、グローバルオブジェクト「window」です。次のようなことをすると、期待される動作を得ることができます。
setTimeout(function(){myObject.test()}, 100); // "this" is myObject
これは私にはかなり奇妙に思えます。誰でも説明できますか、これはなぜですか。