coffeescript链接没有参数?

时间:2014-06-20 05:05:26

标签: methods coffeescript chaining parentheses

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

例如

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

改为

myFunction.chain1.chain2

1 个答案:

答案 0 :(得分:0)

简答:不,你不能。

确切的语法在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不同{1}}将是原型的属性。

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