您好,登錄后才能下訂單哦!
函數(shù):
具名函數(shù)
匿名函數(shù)
一.函數(shù)定義
(1)函數(shù)聲明
函數(shù)聲明只能出現(xiàn)在程序或函數(shù)體內(nèi),
function fun(){
//函數(shù)體
}
(2)函數(shù)表達(dá)式
匿名函數(shù)表達(dá)式
var fun = function(){
//函數(shù)體
}
具名函數(shù)表達(dá)式
var fun = function f(){
//函數(shù)體
}
具名函數(shù)表達(dá)式的函數(shù)名只能在創(chuàng)建函數(shù)內(nèi)部使用
(3)函數(shù)構(gòu)造函數(shù)
Var fun = new Function(),一般不建議使用
二.函數(shù)調(diào)用方式:
(1)作為函數(shù)被調(diào)用,是由于函數(shù)后面加上()操作符來觸發(fā)的,用這種方式調(diào)用時,函數(shù)的上下文就是全局的上下文,即window對象
(2)方法調(diào)用模式:一個函數(shù)是一個對象的屬性,當(dāng)這個函數(shù)被調(diào)用時候,這個函數(shù)就視為這個對象的一個方法。當(dāng)這個函數(shù)作為一個對象的方法被調(diào)用的時候,這個對象就成為這個函數(shù)的上下文。
函數(shù)的上下文的產(chǎn)生,并不由函數(shù)的定義來決定,而是由函數(shù)的調(diào)用來決定。
(3)構(gòu)造函數(shù)調(diào)用:想讓一個函數(shù)作為構(gòu)造器被調(diào)用,需要new關(guān)鍵字,this為創(chuàng)建的新對象
關(guān)于new的過程
1)創(chuàng)建一個空的對象,僅包含Object的屬性和方法。
2)將prototype中的屬性和方法創(chuàng)建一份引用,賦值給新對象
3)將this上的屬性和方法新建一份,賦值給新對象
4)返回this對象,忽略return 語句。
(4)apply/call調(diào)用:通過使用apply和call方法,可以用任何對象作為函數(shù)上下文,并將它顯性的操作
Apply(),接收兩個參數(shù),第一個參數(shù)作為函數(shù)上下文的對象,第二個參數(shù),一個參數(shù)數(shù)組
Call(),則是另一個簡單的形式,第一個參數(shù)作為函數(shù)上下文的對象,第二個參數(shù)只需要傳遞參數(shù)列表來代替參數(shù)數(shù)組。
三.函數(shù)的屬性和方法
Function()的屬性:prototype
Function對象實例屬性:
(1)arguments:arguments對象是一種類數(shù)組對象,它包含所有傳遞給函數(shù)的參數(shù),arguments對象擁有名為callee的屬性,這個屬性指向的是當(dāng)前執(zhí)行的函數(shù),這個屬性可以一直用于在函數(shù)內(nèi)部獲取到函數(shù)自身。arguments對象擁有length屬性,它給出的是在調(diào)用時發(fā)送給函數(shù)的參數(shù)數(shù)量。這個屬性已經(jīng)被js1.4中廢除。
(2)constructor
(3)length:而這個函數(shù)實例length屬性,提供的是已定義參數(shù)的數(shù)量,它可以獲得函數(shù)所需要的參數(shù)總數(shù)量。
Function對象實例方法:
(1)apply()
(2)call()
(3)toString()
四.匿名函數(shù),自調(diào)用的匿名函數(shù)表達(dá)式,自調(diào)用的匿名函數(shù)語句
五.函數(shù)可以無限地嵌套在其他函數(shù)內(nèi)部
在真正定義函數(shù)語句之前,可以在執(zhí)行時調(diào)用該函數(shù)語句,因為函數(shù)聲明提升的作用。使用函數(shù)聲明語句的話,函數(shù)名稱和函數(shù)體均提前,使用函數(shù)定義表達(dá)式,js會將此代碼拆分兩行代碼分別執(zhí)行。先把變量名提升,函數(shù)的表達(dá)式仍然在原來的位置
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。