function print(){ console.log("這是第一個print方法"); } function print(){ console.log("這是第二個print方法"); } function callPrint(){ print(); }
在這個例子中,我們定義了兩個名稱相同的函數,“print”,分別采用了不同的方式打印輸出語句。然后,我們定義了一個方法,將兩個方法的調用進行了簡單的封裝。這個封裝方法就是“callPrint”。 現在問題是,當我們調用“callPrint”方法時,它會調用哪一個“print”方法呢?從代碼上來看,它會調用的是最后一個定義的“print”函數,也就是第二個“print”方法,輸出語句為“這是第二個print方法”。如果我們想要調用第一個“print”方法,該怎么做呢? 接下來的代碼可以解決這個問題:
function printA(){ console.log("這是第一個print方法"); } function printB(){ console.log("這是第二個print方法"); } function callPrint(methodName){ methodName(); } callPrint(printA);
在這個例子中,我們將兩個“print”方法的名稱改為了“printA”和“printB”,并且新建了一個封裝方法“callPrint”。這個方法并不是簡單地調用“print”方法,而是接受一個方法名稱作為參數,并且直接調用傳遞進來的那個方法。這時候,我們可以通過傳遞不同的方法名稱為參數,來調用不同的方法。 在這個例子中,我們調用了“callPrint(printA)”這個方法,將“printA”傳遞了進去。這時候,“callPrint”方法就會調用“printA”方法,輸出語句為“這是第一個print方法”。 那么,如果我們想要在“printB”方法中調用“printA”方法,該怎么辦呢? 這個問題也很容易解決,我們只需要在“printB”方法中調用“callPrint”方法,并將“printA”方法名稱作為參數傳遞進去即可:
function printA(){ console.log("這是第一個print方法"); } function printB(){ console.log("這是第二個print方法"); callPrint(printA); } function callPrint(methodName){ methodName(); } printB();
在這個例子中,我們只是在“printB”方法中添加了一行代碼,調用了“callPrint(printA)”這個方法。這時候,“printB”方法就會按順序輸出兩條語句,分別為“這是第二個print方法”和“這是第一個print方法”。