實例對象和函數對象的區別


實例對象和函數對象本質區別:

實例對象:通過 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 稱為函數對象。若有 Fn.prototype.add(),此時 add 稱為原型對象上的方法。

這里涉及到 prototype 知識以及函數和對象之間的關系, 請參考 https://blog.csdn.net/flyingpig2016/article/details/53048394https://www.cnblogs.com/liyusmile/p/8820443.htmlhttps://blog.csdn.net/zhang1988ling/article/details/84915542

緊接着 Fn.bind(),表示在調用函數對象的 bind 方法,注意只有函數對象才有bind方法,一般的對象沒有這個方法。所以這句說明 Fn 是一個函數對象。請參考 https://blog.csdn.net/qq_42019025/article/details/80708446

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM