OO JQuery和类

我正在一个网站上工作,基本上第一次使用JQuery。 我以前的项目主要使用MooTools,并且我使用MooTools Class结构编写了一些小部件类。 我想将它们移植到JQuery上,但在我看来,对于对象类来说,MooTools没有什么功能。

我搜索了一下,并没有发现太多。 Digg似乎已经推出了自己的,但我不知道这是我应该使用的东西。 有没有更好的办法? 人们通常使用JQuery获得面向对象的方法吗? 封装UI小部件(或任何功能类结构)的常用方法是什么?

我会发布一个可能的MooTools构件类的假示例:

var ZombatWidget = new Class({
    Extends: BaseWidget,
    widgetPropertyX = 'prop1',
    widgetPropertyY = 'prop2',
    attach = function(el) {
        var f = function() { 
            //do something widgety
        };
        el.addEvent('dblclick',f);
        el.addClass('widgetized');
    }
});

var z = new ZombatWidget();
z.attach($('widgetDiv'));

我得到的是比这更大的,但你明白了。 我是否需要将其转换为类/继承构造的prototype方法? 你将如何使用JQuery编写这种对象类?


您可能会发现这种方法对于处理任务有用:构建一个面向对象的jquery插件。

而这篇关于Ajaxian的文章“一个真正的使用jQuery的OO类系统”。


嗯......有趣。 我们有jQuery,这是一个与DOM交互的好工具。 这是一个选择工具,您可以编写自己的代码(插件)来修改选定的项目。 你可以在这里与你自己的(面向对象的)代码在一个插件中进行交互,以做一些非常酷的事情。

那么为什么你需要在jQuery中额外的OO功能,除非你想能够从其他jQuery插件继承?

因为你可能有一个插件可以让你做到以下几点:

$(".spiffyness").yourSpiffyficationPlugin1();

而且,虽然已经做了一些非常酷的事情,但你需要更多的细微之处。

因此,您希望从您的第一个插件继承,这会导致:

$(".spiffyness").yourSpiffyficationPlugin2(); //plugin inherited from 1

但是......你不会这样做:

$(".spiffyness").yourSpiffyficationPlugin1().yourSpiffyficationPlugin2();

第二个插件只是在第一个插件的顶部添加这么小(但很棒)的东西?

换句话说:你想要什么,值得为OO纯粹主义而努力? 或者是jQuery管道机制足够好,也许你需要的一切?

我会说责任和/或你的mootools心态的分离可能是真正的问题。 让jQuery做它擅长的事情,使用它强大的管道机制,管理你自己的插件(它可能包含大量的OO内容)......并且当代码仍然干净时,你可以获得很好的结果。

如果你认为我在这里想得太简单,那么欢迎你提出一个关于你的观点本质的好例子! :-)

而要做到这一点,如果你正在做一些真正先进的事情,并且你不会轻易在其他事情上做些事情,那么你也可以将插件委托给你的一个OO类。 例如:

$.fn.totalAwesomeness = function(options) {
  var defaults = {
    mode: 1,
    title: 'Awesome'
  };
  var opts = $.extend(defaults, options);
  return this.each(function() {
    var $this = $(this);
    var handler = null;
    if(defaults.mode == 1)
       handler = new com.myStuff.class1($this);
    else if(defaults.mode == 2)
   handler = new com.myStuff.class2($this); //class2 inherits from class1 
    handler.doMagic();
  });
};

您始终可以使用moo4q - http://moo4q.com/。 它增加了对jQuery的MooTools类支持。

链接地址: http://www.djcxy.com/p/94013.html

上一篇: OO JQuery and classes

下一篇: Why is jQuery so widely adopted versus other Javascript frameworks?