对 John Resig 的 JavaScript 类框架的改进
Posted
技术标签:
【中文标题】对 John Resig 的 JavaScript 类框架的改进【英文标题】:Improvement over John Resig's JavaScript class framework 【发布时间】:2011-09-19 02:34:05 【问题描述】:大家好,
我最近一直在寻找一个很好的简单的 javascript 类框架,它只做基本的继承。我在他的博客上找到了John Resig's example framework,我发现它非常满足我的需求。然而,这篇文章是 2008 年发布的,毕竟这就是我们所说的网络。
所以我的问题是,你们会按原样使用那个系统,还是会改进这些年来发现的东西?或者可能是一个现有的、积极支持的类框架,类似于这个?
谢谢。
【问题讨论】:
【参考方案1】:您可能想听听 Douglas Crockford 的一些建议(我的重点):
我写 JavaScript 已经 8 年了,我从来没有发现需要使用 uber 函数。 ... 我现在认为我早期尝试在 JavaScript 中支持经典模型是一个错误。
道格拉斯·克罗克福德,Classical Inheritance in JavaScript,
【讨论】:
我支持这个。 JavaScript 有它自己的习惯用法,而对经典继承的“移植”实际上只不过是一根拐杖……该语言有自己的重用模式和可以正常工作的工具。 (但是,如果我要采用经典的继承模式,Resig 仍然是一个不错的模式)。 嗯,我认为一个大问题是这些“自己的习语”往往不是很好理解,就是实施得不好。提供一个熟悉的框架(例如经典的 OO 继承)会使转换变得容易得多(参见 Scala)。有拐杖总比爬行好。 Daff - 但是一旦实现基于类的模式的错误被意识到,可能有很多代码需要修复。 Javascript继承并不难学,它只是需要一个开放的心态。请注意,Resig 计划于 2008 年秋季(9 月?)出版的书仍未出版,而且它的标题似乎是一个更谦虚的“JavaScript 的秘密”。也许 Resig 也在验证 javascript 中基于类的继承的用处。 我不太明白。你们是说应该使用原型继承吗?但是,您如何引用父类?我认为 Crockford 最后关于“超级”的评论可能与某些事情有关,但我现在很困惑。 如果你愿意,你可以崇拜道格拉斯·克罗克福德。我已经设计 Web 应用程序 12 年了,发现在 JS 中模拟经典继承非常简单,并且可以生成更简洁、更可测试的代码。各有各的。【参考方案2】:JavaScriptMVC 的人在基于 John Resigs 框架示例创建 Class implementation 方面做得非常出色:
类提供模拟继承 在 JavaScript 中。使用 cls 来桥接 jQuery的功能之间的差距 编程风格和面向对象 编程。它基于约翰 Resig 的简单类继承 图书馆。除了原型 继承,它包括一些 重要特点:
Static inheritance Introspection Namespaces Setup and initialization methods Easy callback function creation
框架的所有其他部分都基于 Class,但您也可以单独使用它(压缩后小于 6Kb)。我特别喜欢回调函数和静态继承。像这样使用它:
$.Class.extend('My.Class',
// Static properties
,
init : function(args)
// This is the constructor
,
classMethod : function()
alert("Class method called.");
);
【讨论】:
你能告诉我在哪里可以找到定义吗?听起来很有希望。 :)【参考方案3】:您可以查看 John Resig 的 Class 模型的扩展版本:
https://github.com/riga/jclass
它仍然建立在原型之上,但也使用闭包提供私有成员。
【讨论】:
以上是关于对 John Resig 的 JavaScript 类框架的改进的主要内容,如果未能解决你的问题,请参考以下文章
使用 John Resig 的“简单 JavaScript 继承”如何从方法中调用超级方法以及额外代码?
[转] jquery作者John Resig编写的微模板引擎:JavaScript Micro-Templating
《jQuery实战》 Jquery之父John Resig 推荐序言