2013-11-28 78 views
1

我想創建一個Google Closure like結構,其中「classes」以「app.classes.someClass」方式存儲,以便將它們保留在一個名稱空間下。 另外我需要繼承,父類方法會知道它是當前的構造函數名稱,並根據當前(子類)類生成一個字符串。 我成功地完成了我想要的東西,但我不確定這是繼承如何工作的最佳解決方案。如何創建具有繼承功能的Google Closure結構

app.utils.inherits = function(childCtor, parentCtor) 
{ 
    /** @constructor */ 
    function tempCtor() {}; 
    tempCtor.prototype = parentCtor.prototype; 
    childCtor.superClass_ = parentCtor.prototype; 
    childCtor.prototype = new tempCtor(); 
    /** @override */ 
    childCtor.prototype.constructor = childCtor; 
}; 

app.classes.pageController = function pageController() {}; 
app.classes.pageController.prototype.init = function() {}; 
app.classes.pageController.prototype.getTemplate = function() 
{ 
    var name = this.constructor.name; 
    name = name.replace('PageController', ''); 

    return $('#page-template-'+name).html(); 
}; 

// REQUEST PAGE CONTROLLER 
app.classes.requestPageController = function requestPageController() 
{ 
    app.classes.pageController.call(this); 
}; 
app.utils.inherits(app.classes.requestPageController, app.classes.pageController); 
app.classes.requestPageController.prototype.init = function() 
{ 
    var template = app.classes.pageController.prototype.getTemplate.call(this); 
    .... 
}; 

回答