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