JavaScript Function
我們說JavaScript是物件導向的語言,基本做到一切皆是物件。
通過建構函式可以建立物件例項,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼function Antzone(){ // code } let ant=new Antzone()
上述程式碼通過建構函式Antzone建立一個物件例項ant。
關於建構函式更多內容可以參閱JavaScript 建構函式一章節。
既然一切皆為物件,那麼function函式也不例外,由Function建構函式建立。
那麼問題來了,Function又是由誰建立的,Function是由Function建立。
因為Function也是一個function函式,看起來關係有點亂,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼Function instanceof Function
程式碼執行效果截圖如下:
這不是本文要關注的,更多內容參閱JavaScript instanceof一文底部繼承關係圖。
語法結構:
[JavaScript] 純文字檢視 複製程式碼let function_name = new function(arg1, arg2, ..., argN, function_body)
通過Function建構函式可以建立function函式物件。
原本用來建立其他物件例項的function,現在成為Function建構函式的物件例項。
特別說明:注意F的大小寫。
引數解析:
(1).arg1..argN:被建立函式的形式引數。
(2).function_body:被建立函式體中的程式碼。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let func=new Function("a","b","let num=a+b;return num;") console.log(func(2,3));
程式碼執行效果截圖如下:
程式碼分析如下:
(1).Function前兩個引數"a"與"b"是建立函式的兩個形式引數a與b。
(2).Function最後一個引數是新建立函式的函式體部分,也就是大括號中的內容。
上述程式碼建立的函式等價於如下程式碼:
[JavaScript] 純文字檢視 複製程式碼let func=function(a,b){ let num=a+b; return num; }
實際應用中不推薦使用Function建構函式建立function函式。
原因主要有如下兩點:
(1).建立過程複雜,函式宣告或者表示式方式建立方式更加清晰便捷。
(2).效率不高。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let func=Function("a","b","let num=a+b;return num;") console.log(func(2,3));
程式碼執行效果截圖如下:
可以看到Function前面並沒有加關鍵字new。
但是依然可以建立一個函式物件,與加new關鍵字效果完全一樣。
關於new的作用可以參閱JavaScript new 運算子一章節。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let b=5; function createF(){ let b=2; let func=new Function("a","console.log(a+b)"); func(1); } createF();
程式碼執行效果截圖如下:
程式碼分析如下:
(1).在函式createF內通過Function建立函式並賦值給func。
(2).呼叫func函式後,列印結果是5。
(3).由列印結果可見,func函式在全域性作用域查詢超找變數,而不是在宣告它的函式作用域。
相關文章
- javascript 中function(){},new function(),new Function(),Function 摘錄JavaScriptFunction
- JavaScript Function物件JavaScriptFunction物件
- JavaScript function 函式JavaScriptFunction函式
- JavaScript中的 FunctionJavaScriptFunction
- [Javascript] Why need arrow function?JavaScriptFunction
- JavaScript中的Date,RegExp,Function物件JavaScriptFunction物件
- JavaScript Promise Time Limit Function All In OneJavaScriptPromiseMITFunction
- JavaScript入門-函式function(二)JavaScript函式Function
- 使用原生javascript實現jquery的$(function(){ })JavaScriptjQueryFunction
- JavaScript中的函式過載(Function overloading)JavaScript函式Function
- JavaScript 高階函式(Heigher-order function)JavaScript函式Function
- 新人必看的短小而精悍的javascript functionJavaScriptFunction
- JavaScript: window.onload = function() {} 裡面的函式不執行JavaScriptFunction函式
- JavaScript 基礎(二) – 建立 function 物件的方法, String物件, Array物件JavaScriptFunction物件
- [Javascript] Access private variable inside IIFE and mutate this through Object.prototype getter functionJavaScriptIDEObjectFunction
- 【JavaScript框架封裝】使用Prototype給Array,String,Function物件的方法擴充JavaScript框架封裝Function物件
- [Bash] functionFunction
- python FunctionPythonFunction
- Loss FunctionFunction
- java.util.function 中的 Function、Predicate、ConsumerJavaFunction
- 使用JavaScript Function.prototype進行程式碼重構的一些例子JavaScriptFunction行程
- JavaScript 引擎和 Just-in-Time 編譯概念,Hot Function 的簡單介紹JavaScript編譯Function
- Function型別Function型別
- DMSQL WITH FUNCTION子句SQLFunction
- A.Calculating FunctionFunction
- Function pointers and callbacksFunction
- addEventListener("touchend", function ()_devFunction
- TypeError: stringWidth is not a functionErrorFunction
- flask 裝飾器 AssertionError: View function mapping is overwriting an existing endpoint functionFlaskErrorViewFunctionAPP
- (function($,window,document){.......})用法Function
- Function.prototype.callFunction
- Uncaught TypeError: i is not a functionErrorFunction
- python - function list generatorPythonFunction
- C++ function pointersC++Function
- [Vue] Use render functionVueFunction
- jasmine.any(Function)ASMFunction
- drools中使用functionFunction
- bypass disable_functionFunction