JavaScript中Function和Object

其實下面的東西只要懂原型鏈就很容易想通。

>Function.__proto__ === Object.__proto__  // 1
true
>Function.prototype === Function.__proto__  // 2
true
>Function.prototype === Object.__proto__  // 3
true
>Object.prototype === Object.__proto__  // 4
false
>Object.prototype === Function.prototype.__proto__  // 5
true
>Object.prototype === Object.__proto__.__proto__  // 6
true

Function和Object本質(zhì)上都是函數(shù),也就是說:

  • (1) 它們作為構(gòu)造器是Function的直接子類,
  • (2) 它們作為對象是又都是Object的子孫類。

而原型鏈中有:

  • (3) 構(gòu)造器的prototype(即原型)中定義可以被對象繼承的屬性,實例對象的__proto__指向其構(gòu)造器的原型。

所以,

  1. 基于(1)(3),Function.__proto__Object.__proto__都指向Function.prototype,可得代碼中1、2、3的結(jié)果
  2. 基于(1),Object直接繼承自Function并不是Object,所以可得4的結(jié)果
  3. 基于(2)(3),可得Object.prototype === Object.__proto__.[__proto__.]...__proto__。事實上Function的原型是Object的實例。所以可得代碼中5、6的結(jié)果.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容