2011-03-31 48 views

回答

5

Paul, 因爲setTimeout在窗口範圍內運行。該方法也可以通過window.setTimeout()來調用。因此,當調用mike.showName時,這指的是窗口對象,而不是您的Person對象。

你可以使用一個包裝函數來解決這個問題:

window.setTimeout(function() 
    { 
    mike.showName(); 
    }, 5000); 

還可以閱讀:http://www.quirksmode.org/js/this.html

1

您需要捕獲範圍爲匿名函數或setTimeout的會在窗口範圍內運行:

通過 setTimeout()執行
setTimeout(function() { mike.showName() }, 5000); 
1

代碼在單獨的執行上下文來從它被調用的函數運行。因此,被調用函數的this關鍵字將被設置爲window(或global)對象,它不會與調用setTimeout的函數的該值相同。這個問題在JavaScript參考文獻中有更詳細的解釋。使用setTimeout('mike.showName()', 5000);代替。

相關問題