1. 程式人生 > >JavaScript的寄生組合式繼承

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