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
並不是變數,而是函數的名稱。
你可以在函數的內部嵌入函數。內嵌的(內部)函數對於包含這個函數的(外部)函數而言是私有的︰
- 只能由外部函數裡面的語句來存取內部函數。
- 內部函數可以使用外部函數的參數和變數。外部函數不能使用內部函數的參數和變數。