ES6中類的繼承使用extends關鍵字,那麼ES5中是怎麼實現的呢?javascript
ES5中採用構造函數和原型對象的組合方式模擬繼承,因此也稱爲組合繼承;java
核心原理:經過call()借用父構造函數,並把父類型的this指向子類型的this;函數
這種繼承,其實是在調用子構造函數建立實例對象時,在子構造函數內調用了父構造函數,那麼就能夠得到父構造函數中的成員,同時修改被調用的父構造函數的this的指向爲子函數便可,成員就會被繼承到子函數中;this
用一句話說:使用call()在子構造函數調用父構造函數,實現繼承;記得修改父構造函數中的this爲子函數中的thisspa
function Father(uname, age){ this.uname = uame; this.age = age; } function Son(uname, age){ Father.call(this); }
借用原型對象繼承方法prototype
Son.prototype = new father();//由於能夠經過原型鏈訪問到Father的原型對象中的方法 Son.prototype.constructor = Son;//上面的賦值操做,會使Son的constructor指向Father