今天我發現了一個相當奇怪的行爲,當您在Javascript中將函數的方法作爲函數傳遞時,會發生這種行爲。Javascript將對象的方法作爲函數傳遞
setTimeout(myObject.test, 100); // "this" is the global object window
正確調用方法「test」,但「this」不是對象「myObject」而是全局對象「window」。當我做這樣的事情時,我可以得到預期的行爲:
setTimeout(function(){myObject.test()}, 100); // "this" is myObject
這對我來說似乎很奇怪。有人可以解釋,爲什麼這是。
你所描述可奇怪的是,當你使用像AS3或Java語言 - 但在JS這是預期的行爲,默認的作用域是任何事件或超時功能等的「窗口」。所以你通常必須經歷匿名功能。 – olsn 2013-03-25 09:25:28