2011-05-08 112 views
3

如何將testx函數作爲參數傳遞給change_text函數?如何將一個函數傳遞給第一個函數參數中的另一個函數?

function change_text(to, id, func) { 
this.to = to; 
this.id = id; 
    this.doit = function() { 
      this.target = document.getElementById(this.id); 
      this.target.innerHTML = this.to; 
    } 
func; 
} 
function testx() { 
    alert("TESTING"); 
} 

var box = new change_text("HELLO, WORLD", 'theboxtochange', 'testx()'); 

回答

5

通過只是給它的名字(不帶括號或引號):

var box = new change_text("HELLO, WORLD", 'theboxtochange', testx); 

函數是第一類對象,所以他們的名字是對它們的引用。

change_text,那麼您需要使用您參考吧(func),如指向功能的任何其它符號調用它,所以:

func(); 
0

我提高了代碼,現在我明白功能是第一類對象,因此任何對象名稱也是對它的引用。並且該名稱可以通過在名稱周圍省略括號來傳遞給參數中的其他函數。

function change_text(to, id, func) { 
this.to = to; 
this.id = id; 
this.doit = function() { 
     this.target = document.getElementById(this.id); 
     this.target.innerHTML = this.to; 
} 
this.func = func; 
} 
function testx() { 
alert("TESTING"); 
} 

var box = new change_text("HELLO, WORLD", 'theboxtochange', testx()); 
box.func() 

最後一行代碼調用傳遞給第一個函數的函數。

+1

最後一行確實調用了您傳入的函數,將其作爲'box'實例的僞方法調用。你可能會覺得這很有趣:* [神話方法](http://blog.niftysnippets.org/2008/03/mythical-methods.html)* – 2011-05-08 16:33:04

+1

(FWIW,對你自己問題的更新/評論通常應該被編輯爲問題而不是答案。) – 2011-05-08 16:33:39

+0

@TJ Crowder我會記住這一點,並將在未來更新任何改進的問題。感謝您的鏈接,我會徹底閱讀並理解其背後的先進理念。 – Aaron 2011-05-08 16:53:50

相關問題