ES5中的繼承(組合繼承)

  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
相關文章
相關標籤/搜索