javascript對象---8 Function函數

Function函數:函數對象,任何一個函數的定義,最終都是生成了一個Function對象, Function是自省的(本身調用本身,本身建立本身)。  ----全部函數都是  Function  的實例對象數組

function Function(){   return 1   }  等價於      var a= new Function ( "return 1");app

二.函數對象和函數體的區別函數

函數對象 是 無序屬性 的集合,不用調用函數也會通過預編譯,加載到內存中。this

函數體是程序塊,在調用時,由函數對象執行apply方法進行執行,執行時纔會加載到內存中,執行後會彈棧spa

三。Function函數的原型鏈:因爲是特殊的函數,所以具有:prototype

prototype: 指向Function的prototype對象。指針

__proto__:指向Function的prototype對象。  //Function 是自省的,由本身建立對象

因爲Function的prototype對象的原型鏈指向Object的原型對象,所以全部Function也具有Object原型對象的屬性和函數。事件

Function函數的內置屬性及函數:內存

Function的全局屬性及函數。

Function的prototype屬性及函數

四.Function函數全局屬性及函數

1. 函數的全局屬性說明: 全部函數對象都具有的屬性

length :函數聲明時的 參數 數量 ( 形參數量)

name:函數名

prototype:原型對象,每一個函數都有原型對象,在使用new 

 

五. Function的prototype函數

函數的prototype擴展函數以下:

1.apply(this.arguments):執行函數體內容。 

----this  : 在函數體中的this指針。 目標函數體執行時this指針

----arguments :傳遞給函數體的參數、數組 目標函數的實際參數值 [  ,  ]

apply是執行目標函數體的方法,在函數調用時由JS引擎調用

應用場景:若是目標函數執行時須要修改this指針, 經過改變 apply 中傳入 this的值 改變函數中this的指向

apply在事件章節中,想要給目標響應函數傳遞參數時要用

function fun( a,b){
             console.log(a+b);
            }
            
//最簡單的調用方式
            fun(20,25);
            
//當作構造函數執行
            new fun(20,25);
            
//經過調用apply函數執行 this爲window對象   ---能夠經過改變 this傳入值·改變函數中this·指向
            fun.apply(this ,[20,25]);  //數組【】裏面包含要傳遞的值,值用逗號分開

2.call( this, paramter1 ,paramter2 ....) : 執行函數體內容。

-this : 在函數體中的 this指針。

--paramter :傳遞給函數體的參數

    fun.call( this, 20,25)  ----除了傳遞參數時不加 【】其他同apply相同

結果----45

3. toString() : 返回函數程序字符串。

對象函數同 函數體沒有任何關係,在對象函數的底層,封裝了當前函數函數體的字符串代碼,執行時執行這段字符串代碼便可。

alert(  fun.toString() )

結果---function fun( a,b){              console.log(a+b);             }

相關文章
相關標籤/搜索