【问题标题】:Improvement over John Resig's JavaScript class framework对 John Resig 的 JavaScript 类框架的改进
【发布时间】:2011-09-19 02:34:05
【问题描述】:

大家好,

我最近一直在寻找一个很好的简单的 JavaScript 类框架,它只做基本的继承。我在他的博客上找到了John Resig's example framework,我发现它非常满足我的需求。然而,这篇文章是 2008 年发布的,毕竟这就是我们所说的网络。

所以我的问题是,你们会按原样使用那个系统,还是会改进这些年来发现的东西?或者可能是一个现有的、积极支持的类框架,类似于这个?

谢谢。

【问题讨论】:

    标签: javascript javascript-framework


    【解决方案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

    它仍然建立在原型之上,但也使用闭包提供私有成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 2011-04-18
      • 2012-06-19
      • 1970-01-01
      • 2013-02-09
      相关资源
      最近更新 更多