【问题标题】:what's this jquery syntax?这是什么jQuery语法?
【发布时间】:2010-05-07 17:38:28
【问题描述】:

我在一些 Jquery 插件中经常看到这种情况

    $('#foo').myPlugin({
    foo: 'bar',
            bar: 'foo'
});

我说的是 .myPlugin() 部分中的 {}。我经常看到像

这样的匿名函数
.click(function(){
});

但上面的语法看起来不一样

感谢您的帮助!

【问题讨论】:

    标签: jquery parameters function


    【解决方案1】:

    它是一个对象。这种表示法用于模拟named arguments——这是 JS 在 AFAIK 中无法做到的。

    它允许无限扩展附加参数,而无需在函数声明中声明它们:

    function myfunc(args)  { }  
    vs.
    function myfunc(duration, opacity, width, height, speed)  { }
    

    而且 - 最重要的是 - 它允许参数的任意顺序:

    {"duration": "0.5",
     "width": 300,
     "speed": 2 }
    

    看到许多 JS 开发人员不在 IDE 的上下文中工作(这将使用“前瞻”显示预期的函数参数),这是一件非常方便的事情,因为您不必记住顺序哪个参数是什么时候来的。

    这样做的缺点是,如果有 IDE,则很难为这些假命名参数提供任何“前瞻”功能,并且参数的任意顺序可能导致从长远来看,一定程度的混乱。

    【讨论】:

      【解决方案2】:

      这是一个 JavaScript 对象字面量。它是 JavaScript 语言的一部分(不特定于 jQuery)。 JavaScript 对象本质上是名称和值的映射;名称和值用冒号分隔,对用逗号分隔。整个东西被一对花括号包裹着。

      所以,如果你做了这样的事情:

      var obj = { foo: 'bar', name: 'value' };
      

      你以后可以这样做:

      alert(obj.foo); //alerts "bar"
      

      甚至:

      alert(obj['foo']); //also alerts "bar"
      

      在这种情况下,对象作为参数传递给 myPlugin() 函数。

      【讨论】:

        【解决方案3】:

        这只是一个函数调用,其中 arg 实际上是参数的映射。

        【讨论】:

          猜你喜欢
          • 2011-01-19
          • 2010-12-13
          • 1970-01-01
          • 2012-02-12
          • 2023-04-01
          • 1970-01-01
          • 2012-01-29
          • 2017-10-10
          • 2021-08-23
          相关资源
          最近更新 更多