【问题标题】:coffeescript chaining with no parameters?没有参数的咖啡脚本链接?
【发布时间】:2014-06-20 05:05:26
【问题描述】:

您好,我想知道在咖啡脚本中链接时是否可以省略空括号。

例如

myFunction = -> [...]
chain1     = -> [...]
chain2     = -> [...]  
myFunction().chain1().chain2()

改为

myFunction.chain1.chain2

【问题讨论】:

    标签: methods coffeescript chaining parentheses


    【解决方案1】:

    简短回答:不,你不能。

    这种确切的语法在 CoffeeScript 中不起作用。你只能链接至少有一个参数的方法,所以这样的事情可以工作:

    myFunction arg1
      .chain1 arg2
      .chain2 arg3
    

    例如,对于 jQuery,您可以执行以下操作:

    $ ->
      $ '#foo'
        .and '.bar'
        .click ->
          alert 'awesome!'
    

    这是因为,与 Ruby 中不同,在引用名称时不带前导 '@' 或 '::' 意味着方法或局部变量,在 CoffeeScript 中,myFunction 是返回函数本身的表达式。因此,myFunction.chain1myFunction().chain1 都可以是有效的并且意味着不同的东西。

    但是请注意,new 关键字暗示了一个函数调用,因此如果 myFunction 是一个(名称奇特的)构造函数,您可以编写 (new myFunction).chain1,但这又是不同的,因为 .chain1 将是属性原型。

    此外,如果您是相关库的作者,您可以使用 getters/setters 在纯 JavaScript 中模拟该行为,但我强烈反对这样做。

    【讨论】:

    • 非常感谢!好信息在这里。我正在研究各种执行没有参数的方法的方法。我得到的最接近的是咖啡脚本中的do 调用,并考虑使用myFunction = do [...],然后我就可以在没有参数的情况下调用 myFunction
    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2011-11-14
    • 2016-06-27
    • 2012-08-26
    相关资源
    最近更新 更多