JavaScript學習要點(五)

使用構造函數繼承是在子類型中調用父類型的構造函數,其問題是函數無法複用

組合繼承將原型鏈和借用構造函數繼承技術組合,使用原型鏈實現對原型屬性和方法的繼承,借用構造函數實現對實例屬性的繼承

原型式繼承基於已有的對象創建新對象,同時不必因此創建自定義類型,相當於對已有的對象進行了淺複製,某些屬性會被共享

Object.create()函數可用來做原型式繼承,第一個參數作爲基本對象,第二個參數爲新對象定義額外屬性,以這種方式指定的任何屬性都會覆蓋原型對象上的同名屬性

寄生式繼承是通過調用函創建一個新對象,以某種方式來增強這個對象最後返回這個對象

組合式繼承的缺點是無論在什麼情況下都會調用兩次超類型構造函數,但在調用子類構造函數時會再重寫這些屬性

寄生式組合繼承可以解決這個問題

function inheritPrototype(subType, superType){
    var prototype = object(superType.prototype); //創建對象
    prototype.constructor = subType;//增強對象
    subType.prototype = prototype; //制定對象
}

function SuperType(name){
    this.name = name;
    this.color = ["red","blue","green"];
}

SuperType.prototype.sayName = function(){
    alert(this.name);
};

function SubType(name, age){
    superType.call(this, name);
    this.age = age;
}

inheritPrototype(SubType, SuperType);

SubType.prototype.sayAge = function(){
    alert(this.age);
};

今天累的不行了,就寫這麼多吧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章