如何使用继承创建类似结构的Google Closure

时间:2013-11-28 09:55:08

标签: javascript jquery inheritance closures

我想创建一个类似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);
  ....
};

1 个答案:

答案 0 :(得分:0)

我猜MVC框架'ThinkMVC'实现了相同的模式。 https://github.com/chennanfei/ThinkMVC