Function 物件

 

Function 物件

預先定義的 Function 物件會把指定的 JavaScript 字串的代碼編譯成函數。

建立 Function 物件如下︰

functionObjectName = new Function ([arg1, arg2, ... argn], functionBody)

functionObjectName 就是變數的名稱或既存物件的屬性。他也可以是後跟小寫的事件處理器名稱的物件,如 window.onerror

arg1, arg2, ... argn 就是要被函數用作形式參數的名稱的參數。其中每一個都必須是字串,並合於有效的 JavaScript 識別子。例如 "x" 或 "theForm"。

functionBody 就是指定的 JavaScript 代碼的字串,將會編譯成函數本體。

Function 物件會在每一次被用到時求值。這比宣告函數並在你的代碼中呼叫還要沒效率,因為宣告過的函數已經編譯過了。

除了此處所描述的函數的定義方式以外,你也可以使用 function 語句和函數的表達式。參閱 Core JavaScript 1.5 參考 取得更進一步資訊。

下面的代碼把函數代入到變數 setBGColor。這個函數會設定目前文件的背景色。

var setBGColor = new Function("document.bgColor='antiquewhite'")

若要呼叫這個 Function 物件,你可以把指定的變數名稱如同函數一般來使用。下面的代碼執行了由 setBGColor 變數所指定的函數︰

var colorChoice="antiquewhite"
if (colorChoice=="antiquewhite") {setBGColor()}

你可以使用下列任一方式把函數代入給事件處理器︰

1. document.form1.colorButton.onclick=setBGColor
2. <INPUT NAME="colorButton" TYPE="button"
      VALUE="Change background color"
      onClick="setBGColor()">

上面所建立的變數 setBGColor 類似於宣告下面的函數︰

function setBGColor() {
   document.bgColor='antiquewhite'
}

把函數代入給變數類似於宣告函數,但有幾點不同︰

  • 當你使用 var setBGColor = new Function("...") 把函數代入給變數時,setBGColor 只是參照以 new Function() 建立的函數的變數。
  • 當你使用 function setBGColor() {...} 建立函數,setBGColor 並不是變數,而是函數的名稱。

你可以在函數的內部嵌入函數。內嵌的(內部)函數對於包含這個函數的(外部)函數而言是私有的︰

  • 只能由外部函數裡面的語句來存取內部函數。
  • 內部函數可以使用外部函數的參數和變數。外部函數不能使用內部函數的參數和變數。

文件標籤與貢獻者

 此頁面的貢獻者: teoli, happysadman
 最近更新: teoli,