JavaScript的寄生組合式繼承

寄生組合式繼承示例

第一篇博客,留個紀念

//父類構造函數
function Super(name){
    this.name = name;
    this.funcName = "Super";
    this.func = "super";
}
Super.prototype.sayName = function (){ alert(this.name); }
Super.prototype.sayFuncName = function (){ alert(this.funcName); }

//子類構造函數
function Sub(name,age){
    Super.call(this,name);
    this.age = age;
    this.funcName = "Sub";
}

//繼承函數
function inheritPrototype(Sub,Super){
    //中間實例化對象
    var a = Object(Super.prototype);
    //重寫該對象的構造函數指針,指向Sub函數
    a.constructor = Sub;
    //Sub的原型指向實例化對象a
    Sub.prototype = a;
}
//調用繼承函數,實現原型鏈構造
inheritPrototype(Sub,Super);

/*
----------一定要在調用繼承函數之後添加,如果放在繼承函數之前,隨着原型的替換,函數會undefined。----------
*/
//添加子類方法
Sub.prototype.sayAge = function (){ alert(this.age); }
Sub.prototype.sayFuncName = function (){ alert(this.funcName); }

//測試代碼
var subTest = new Sub("lulu",20);
subTest.sayName(); //lulu
subTest.sayAge(); //20
subTest.sayFuncName(); //Sub
alert(subTest.func); //super







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章