不要在這裏自學,看起來應該是明顯的問題。使用函數作爲對象屬性在頁面加載時運行,但在被調用時不運行
我正在製作一個遊戲,其中角色(可移動圖像)觸摸屏幕上的許多圖像之一,並且當按下某個按鍵時,將會運行特定於正在觸摸的圖像的功能。
我創建了一個對象,其中有幾個屬性定義了圖像的位置等,最後一個參數是一個函數(作爲一個對象屬性的函數稱爲方法,對嗎?)。這裏的對象:
var obj1 = {xleft:0, xright:800, ytop:0, ybottom:500, action:"Test", text:"Whoop whoop", func:alert('Eureka!')};
所以,當我的性格是這些參數(觸摸物體)內的按鍵,該功能運行:
function action(){ document.getElementById('Text').innerHTML = obj1.text; obj1.func(); }
當按鍵被按下,文本顯示應該是,但功能不運行(更具體地說,在這個化身中,該功能在屏幕加載時運行,這不是我想要的)。我嘗試了其他幾種可能性,但沒有任何成效。
任何人都可以幫忙嗎?
只是調用屬性「func」不會使賦值的值 - 這是* evaluate *(alert('Eureka!')')表達式的結果 - 是一個函數。換句話說,代碼大致相當於'var result_of_alert = alert('Eureka!'); var obj1 = {func:result_of_alert};',這應該使問題更加明顯。 – user2864740 2014-08-28 21:38:24
我不確定我的理解。我猜你在說我需要在我的「函數操作」中輸入一些代碼來運行func alert,而不是在那裏說明它,但這就是我所要求的。如何通過函數動作來運行obj1.func? – Truth 2014-08-28 21:39:35
非常。分配一個真實函數,而不是調用一個函數的(未定義值)結果:'var obj1 = {func:function(){alert('Wheee!')}}'。將'function(){..}'作爲表達式的結果返回一個函數對象,該函數對象是一個函數,可以稍後調用(例如'obj1。FUNC()')。請參閱http://stackoverflow.com/questions/111102/how-do-javascript-closures-work?rq=1 etc. – user2864740 2014-08-28 21:40:22