js抽象類和抽象方法


js中模擬抽象類:在父類中調用一個未定義的方法,這個方法在子類中必須被實現。

1, 模擬類的工廠模式

//基類
var Class = {
    //基類的靜態方法
    creat:function(){
        //返回一個constructor
        return function(){
            //調用未定義的initialize,
            //將constructor的arguments傳遞給initialize
            this.initialize.apply(this,arguments);
        }
    }
};

var class1 = Class.creat();
class1.prototype = {
    initialize:function(str){
        alert(str);
    }
};
var obj = new class1('hello');

2, 在父類中調用一個未定義的方法(或者定義了的空方法),這個方法在子類才被實現。

Object.extend = function(des,source){
    for(p in source){
        des[p] = source[p];
    }
    return des;
};
Object.prototype.extend = function(object){
    return Object.extend.apply(this,[this,object]);
};

function BaseClass(){};
BaseClass.prototype = {
    initialize:function(name,age){
        this.name = name;
        this.age = age;//調用了一個抽象方法
        this.oninit();
    },
    //抽象方法是一個空方法,由派生類實現
    oninit:function(){} 
};
function ClassA(){};
ClassA.prototype = (new BaseClass()).extend({
    oninit:function(){
        alert(this.name + ' : ' + this.age);
    }
}); 
var obj = new ClassA();
obj.initialize('Tom',22);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM