Methods 没有参数的coffeescript链接?

Methods 没有参数的coffeescript链接?,methods,coffeescript,chaining,parentheses,Methods,Coffeescript,Chaining,Parentheses,嗨,我想知道在coffeescript中链接时是否可以省略空括号 比如说 myFunction = -> [...] chain1 = -> [...] chain2 = -> [...] myFunction().chain1().chain2() 取而代之 myFunction.chain1.chain2 简短回答:不,你不能。 这种精确的语法在CoffeeScript中不起作用。您只能链接至少有一个参数的方法,因此类似的方法可以工作: myFunc

嗨,我想知道在coffeescript中链接时是否可以省略空括号

比如说

myFunction = -> [...]
chain1     = -> [...]
chain2     = -> [...]  
myFunction().chain1().chain2()
取而代之

myFunction.chain1.chain2
简短回答:不,你不能。 这种精确的语法在CoffeeScript中不起作用。您只能链接至少有一个参数的方法,因此类似的方法可以工作:

myFunction arg1
  .chain1 arg2
  .chain2 arg3
例如,对于jQuery,您可以执行以下操作:

$ ->
  $ '#foo'
    .and '.bar'
    .click ->
      alert 'awesome!'
这是因为,在Ruby中,引用一个没有前导“@”或“::”的名称意味着一个方法或一个局部变量,而在CoffeeScript中,myFunction是一个返回函数本身的表达式。因此,myFunction.chain1和myFunction.chain1都可以是有效的,并且具有不同的含义

但是请注意,new关键字意味着函数调用,因此如果myFunction是一个命名奇怪的构造函数,则可以编写新的myFunction.chain1,但这与原型的属性.chain1不同


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

非常感谢!好消息。我正在研究各种无参数执行方法的方法。我得到的最接近的是coffeescript中的do调用,并考虑使用myFunction=do[…],然后我就可以在没有参数的情况下调用myFunction了