javascript - 如何创建类似 Google Closure 的继承结构

标签 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);
  ....
};

最佳答案

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

关于javascript - 如何创建类似 Google Closure 的继承结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262803/

相关文章:

全屏的javascript mousemove事件

javascript - jQuery 如何使用 ajax 读取和格式化数据以进行自动完成

javascript - 如何通过 npm 正确导入 jquery 验证

javascript - 无法让 jQuery 创建正确的 HTML

javascript - 如何连接多个数字?

javascript - 如何使用 jQuery 创建文本区域倒计时?

JavaScript:如何检测ES6类有自己的构造函数?

C#继承接口(interface)列表

Java - 扩展类

javascript - 用箭头函数模拟javascript函数