例項物件和函式物件的區別

BAHG發表於2020-05-17

例項物件和函式物件本質區別:

例項物件:通過 new 函式產生的物件稱為例項物件,簡稱物件。

函式物件:將函式作為物件使用時,簡稱為函式對。

下面舉例說明:

  function Fn() {

  }
  const fn = new Fn()
  console.log(fn);  
  console.log(Fn.prototype)
  console.log(Fn.bind())

結果:

 

分析程式碼:

首先定義一個函式,即 Fn 是一個函式。接著 new Fn(),說明 Fn 是一個建構函式。

關於建構函式請參考https://blog.csdn.net/m_ssy/article/details/82894813

此時 fn 是 Fn 的例項物件,簡稱物件。因此第一條列印語句輸出的就是一個物件。

接著 Fn.prototype,每建立一個函式,該函式都會自動帶有一個prototype屬性。按語法格式來看這裡的 Fn 應該是一個物件,但是它又是一個函式,這個時候我們就把 Fn 稱為函式物件。

這裡涉及到 prototype 相關知識 以及函式和物件之間的關係,請參考 https://blog.csdn.net/flyingpig2016/article/details/53048394https://www.cnblogs.com/liyusmile/p/8820443.html

緊接著 Fn.bind(),表示在呼叫函式物件的 bind 方法,注意只有函式物件才有bind方法,一般的物件沒有這個方法。說明 bind 方法在 Fn 的原型上。請參考 https://blog.csdn.net/qq_42019025/article/details/80708446

此外函式物件的方法還有 call() 方法和 apply() 方法,詳細介紹請參考 https://blog.csdn.net/qq2071114140/article/details/100024421

相關文章