今天我发现了一个相当奇怪的行为,当您在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