javascript中Function和Object之間的關系


js中的類繼承模式類似 c++中的  基類和派生類的關系。這里我們嘗試通過這樣的一種方式來解釋js中的基於原型鏈的繼承機制。

派生類對象存儲了基類的數據成員

派生類的實例對象可以 訪問基類的屬性,方法

js中的內置對象Date、RegExp、Number、Function... 可以看做派生類、Object可以被看做 基類。

而特殊的是,javascript中Object這個基類,同時又是 Function這個派生類的 實例對象。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

javascript中使用function關鍵詞創建一個類,例如:function obj(){} 

但是,對於obj這個類(或方法),它會同時有__proto__和prototype屬性。__proto__屬性決定它是Function類的一個實例,你就可以視它為一個普通的方法或者屬性,能夠使用apply、call..或者obj() 來調用它。;而prototype屬性決定它是一個構造函數(派生類)。而由於javascript中的任何構造函數都將會是Object的派生類,所以你可以使用toString。。等方法。

所以可以得到,如果我們將Object視作一個function  Object(){} 構造函數,在其原型上擴展屬性a=1   Object.prototype.a = 1 

那么,Object.a===1   是成立的,因為Object同時也是Function的實例對象

 


免責聲明!

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



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