javascript插件-面向对象? 简介

javascript插件-面向对象? 简介,javascript,jquery,singleton,module-pattern,Javascript,Jquery,Singleton,Module Pattern,你好, 我正在尝试用javascript开发一些插件或/和对象,它将控制某些对象的一些属性。它还将使用jQuery来简化开发 主意 这是一个伪代码,给你一个想法,因为我不能用正确的词用英语来描述它,所以不可能用谷歌来找到我想要使用(和学习)的东西 我将这样使用它(或类似): 笔记 我并不是真的在寻找jQuery插件教程-它更像是在javascript文档中使用一个对象,之所以提到jQuery只是因为它将用于修改dom和简化选择器,jQuery插件可能只是为了那一个小功能添加 我正在寻找一些东西,

你好,

我正在尝试用javascript开发一些插件或/和对象,它将控制某些对象的一些属性。它还将使用jQuery来简化开发

主意 这是一个伪代码,给你一个想法,因为我不能用正确的词用英语来描述它,所以不可能用谷歌来找到我想要使用(和学习)的东西

我将这样使用它(或类似):

笔记 我并不是真的在寻找jQuery插件教程-它更像是在javascript文档中使用一个对象,之所以提到jQuery只是因为它将用于修改dom和简化选择器,jQuery插件可能只是为了那一个小功能
添加

我正在寻找一些东西,它将位于我的文档顶部,并根据计时器、用户操作或其他方式从其自身调用函数

问题
  • 我真的不知道从哪里开始构建这个对象/插件
  • 我真的不知道如何维护一个变量,即jQuery对象的集合(类似于
    $('#simple,#simple2');
  • 我可能想使用
    $.fn.addToPlugin
    扩展jQuery以使用对象链接,但这应该很简单(实际上只是
    每个(p.add($(this));)
  • 我最大的问题显然是我无法解释我想要什么
  • 我希望我有任何意义,想法,链接或建议赞赏

    编辑 它是这样的,我就是不知道它在javascript中是如何调用/使用的——例如在伪PHP中:

    class Foo() {
      $collection;
      $timer, $action;
    
      function onTimer(){
        foreach($collection as $e){
          $e->someAction();
        }
      }
    
      function add($e){
        $collection[] = $e;
      }
    
      function start(){
        $timer->start( onTimer() );
      }
    
      function->stop(){
        $timer->stop();
      }
    }
    
    var f = new Foo();
    
    Foo.add(something);
    Foo.start();
    
    看一看。我要说的是,您提出的API并不是真正的“jQuery方式”。最可能的情况是:

    $("#simple, #simple2").hideandshow();
    
    一个起点是:

    jQuery.fn.hideandshow = function() {
      return this.each(function(){
        $(this).show().hide().stop();
      });
    };
    
    你基本上完成了

    现在调用这个事件序列也没有什么意义,但这是另一个问题

    现在方法链接变得更有趣了,我想这就是“单例”的由来。现在在jQuery的情况下——至少对于jQuery插件来说——状态作为一般规则存储在jQuery对象本身上:

    jQuery.effects = [];
    jQuery.addeffect = function() {
      for (int i=0; i<arguments.length; i++) {
        if (typeof this[arguments[i]] == "function") {
          this.effects.push(arguments[i]);
        }
      }
    };
    
    现在,它有一个限制,即不能将参数传递给这些效果。不太清楚如何避开这个问题。

    看一看。我要说的是,您提出的API并不是真正的“jQuery方式”。最可能的情况是:

    $("#simple, #simple2").hideandshow();
    
    一个起点是:

    jQuery.fn.hideandshow = function() {
      return this.each(function(){
        $(this).show().hide().stop();
      });
    };
    
    你基本上完成了

    现在调用这个事件序列也没有什么意义,但这是另一个问题

    现在方法链接变得更有趣了,我想这就是“单例”的由来。现在在jQuery的情况下——至少对于jQuery插件来说——状态作为一般规则存储在jQuery对象本身上:

    jQuery.effects = [];
    jQuery.addeffect = function() {
      for (int i=0; i<arguments.length; i++) {
        if (typeof this[arguments[i]] == "function") {
          this.effects.push(arguments[i]);
        }
      }
    };
    

    现在,它有一个限制,即不能将参数传递给这些效果。不太清楚如何解决这个问题。

    如果你想用Javascript编写一个单例,应该会显示你需要的一切。

    如果你想用Javascript编写一个单例,应该会显示你需要的一切。

    请看注释-我可能没什么意义-现在已经很晚了,毕竟:]我可能会因为提到jQuery而把你搞糊涂了,我会用一些php代码来编辑它,让你有个想法。哇,你真的很有帮助,但是用定时器(
    setInterval
    )来使用它有意义吗?就像我的例子中的php代码一样?我很抱歉Cletus,但是eddy.kavanagh不知怎的读懂了我的心思:?:]请看注释-我可能没什么意义-毕竟已经晚了:]我可能会因为提到jQuery而把你搞糊涂了,我会用一些php代码来编辑它,让你知道。哇,你真的很有帮助,但是用定时器(
    setInterval
    )来使用它有意义吗?就像我的示例php代码一样?我向克莱特斯道歉,但艾迪·卡瓦纳不知怎么地读懂了我的心思:?:]看看链接,它与YUI无关,如果你不想,你不必使用YUI为你的代码命名。看看链接,它与YUI无关,如果你不想,你不必使用YUI为你的代码命名。
    $.addeffect("hide", "show", "stop");
    $("#simple, #simple2").do();