Function建構函式
阿新 • • 發佈:2018-11-09
在 js 中 使用 Function 可以例項化函式物件. 也就是說在 js 中函式與普通物件一樣, 也是一個物件型別( 非常特殊 )
- 函式是物件, 就可以使用物件的動態特性
- 函式是物件, 就有建構函式建立函式
- 函式是函式, 可以建立其他物件(函式的建構函式也是函式)
- 函式是唯一可以限定變數作用域的結構
函式是 Function 的例項
new Function( arg0, arg1, arg2, ..., argN, body );
- Function 中的引數全部是字串
- 該建構函式的作用是將 引數連結起來組成函式
- 如果引數只有一個, 那麼表示函式體
- 如果引數有多個, 那麼最後一個引數表示新函式體, 前面的所有引數表示新函式的引數
- 如果沒有引數, 表示建立一個空函式
建立一個列印一句話的函式
// 傳統的
function foo () {
console.log( '你好' );
}
// Function
var func = new Function( 'console.log( "你好" );' );
// 功能上, 這裡 foo 與 func 等價
建立一個空函式
// 傳統
function foo () {}
// Function
var func = new Function();
傳入函式內一個數字, 列印該數字
// 傳統
function foo ( num ) {
console.log( num );
}
// Function
var func = new Function ( "num" ,"console.log( num );" );
func();
利用 Function 建立一個函式, 要求傳入兩個數字, 列印其和
var func = new Function( 'num1', 'num2', 'console.log( num1 + num2 );' );
練習: 利用 Function 建立一個函式, 要求允許函式呼叫時傳入任意個數引數, 並且函式返回這些數字中最大的數字.
練習: 利用 Function 建立一個求三個數中最大數的函式.
// 傳統
function foo ( a, b, c ) {
var res = a > b ? a : b;
res = res > c ? res : c;
return res;
}
// Function
var func = new Function( 'a', 'b', 'c', 'var res = a > b ? a : b;res = res > c ? res : c;return res;' )
解決程式碼太長的辦法:
利用 加法 連線字串
var func = new Function( 'a', 'b', 'c', 'var res = a > b ? a : b;' + 'res = res > c ? res : c;' + 'return res;' );
利用字串特性( 剛學 )
function foo ( a, b, c ) { var res = a > b ? a : b; res = res > c ? res : c; return res; } var func = new Function( 'a', 'b', 'c', 'return foo( a, b, c );' );
- ES6 的語法( 少瀏覽器實現 )
- 使用 鍵盤左上角的 左單引號 表示可換行字串的界定符
(最終)利用 DOM 的特性完成該方法