其實JavaScript的原型最好的用法就是運用在面向對象編程的繼承中,今天就來給你們講一下,幾種經常使用的原型繼承運用方法。編程
原型繼承:每個構造函數都有prototype原型屬性,經過構造函數建立出來的對象都繼承自該原型屬性。因此能夠經過更改構造函數的原型屬性來實現繼承。瀏覽器
在JavaScript中,繼承的方式有多種,能夠一個對象繼承另外一個對象,也能夠經過原型繼承的方式進行繼承。函數
接下來給你們演示講解一下幾種繼承方式:prototype
1.簡單混入繼承3d
直接遍歷一個對象,將全部的屬性和方法加到另外一對象上。調試
2.混入式原型繼承cdn
混入式原型繼承其實與上面的方法相似,只不過是將遍歷的對象添加到構造函數的原型上。對象
咱們能夠利用面向對象的思想,將面向過程進行封裝。blog
替換式原型繼承,在上面已經舉過例子了,其實就是將一個構造函數的原型對象替換成另外一個對象。繼承
替換式原型繼承時的bug
替換原型對象的方式會致使原型的constructor的丟失,constructor屬性是默認原型對象指向構造函數的,就算是替換了默認原型對象,這個屬性依舊是默認原型對象指向構造函數的,因此新的原型對象是沒有這個屬性的。
當咱們想把對象1做爲對象2的原型的時候,就能夠實現對象2繼承對象1。前面咱們瞭解了一個屬性:proto,實例出來的對象能夠經過這個屬性訪問到它的原型,可是這個屬性只適合開發調試時使用,並不能直接去替換原型對象。
因此這裏介紹一個新的方法:Object.create()。
語法:var obj1 = Object.create(原型對象);
示例代碼:讓空對象obj1繼承對象obj的屬性和方法
利用瀏覽器的能力檢測,若是存在Object.create則使用,若是不存在的話,就建立構造函數來實現原型繼承。