函數類型

函數類型

函數是對象,函數名實際上爲一個指向函數對象的指針,不會與某個函數綁定。

函數的定義

  • 使用函數聲明語法定義
  • 使用函數表達式定義【不推薦】
  • 使用Function構造函數

注意:使用不帶圓括號的函數名是訪問函數指針,而並非是調用函數。

函數聲明和函數表達式的區別:
  1. 解析器會先讀取函數聲明,並使其在執行任何代碼前可用
  2. 函數表達式是當解析器執行到它所在的代碼行,纔會被解釋執行

函數的內部屬性

  1. arguments: 類數組對象,包好所有傳入函數中的參數
  2. this: 引用函數執行的環境對象
  3. length: 函數接收的命名參數的個數
  4. prototype: 保存所有的實例方法所在 【後一篇會詳細介紹】
    prototype是不可枚舉的,所以使用for-in是無法發現的。

函數的方法:

  1. apply/call:非繼承而來的方法,在特定的作用域中調用函數,實際上等於設置函數體內this對象的值
  2. apply()方法接收兩個參數:1)在其中運行的函數作用域 2)Array的實例或者arguments對象
    注意:在嚴格模式下,未指定環境對象而調用函數,則 this不會轉型爲window,而爲undefined.
  3. call()接收參數:1)在其中運行的函數作用域 2)參數直接傳遞給函數
  4. bind(): 創建一個函數的實例,其this值會被綁定到傳給bind()函數的值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章