我想创建一个类似 Google Closure 的结构,其中“类”以“app.classes.someClass”的方式存储,以便将它们保存在同一个命名空间下。 此外,我还需要继承,使用一个父方法来知道它的当前构造函数名称并根据当前(子)类生成一个字符串。 我设法实现了我想要的目标,但我不确定这是否是继承按我想要的方式工作的最佳解决方案。
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);
....
};
最佳答案
我猜 MVC 框架“ThinkMVC”实现了相同的模式。 https://github.com/chennanfei/ThinkMVC
关于javascript - 如何创建类似 Google Closure 的继承结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262803/