一圖弄清JavaScript的繼承與原型

其中Function、Object是JavaScript的內建類,JavaScript的類其實是一個functionprototype

而function對象會憑空多出一個prototype屬性3d

這就是一切困擾的起源對象

凡是function類型的對象,constructor都指向Function,包括Function本身blog

凡是function類型的對象,原型(__proto__)都指向Function.prototype包括Function本身繼承

一切function都是Function類的實例,Function又是繼承自Object。而Object也是一個function。ip

function對象默認會自帶一個prototype屬性,這個屬性是一個Object類型,通常該屬性對象都能從其__proto__屬性去尋找父類,惟獨Object.prototype的__proto__屬性是null原型

固然因爲JavaScript的動態性質,這一切均可以改變,你能夠任意更改屬性的指向,隨心所欲。io

好比說,把一個function對象的prototype刪除掉,那麼就沒法繼承這個對象了。系統中的Proxy就是這種貨色。function

相關文章
相關標籤/搜索