嗨我想知道在链接coffeescript时是否可以省略空括号。
例如
myFunction = -> [...]
chain1 = -> [...]
chain2 = -> [...]
myFunction().chain1().chain2()
改为
myFunction.chain1.chain2
答案 0 :(得分:0)
确切的语法在CoffeeScript中不起作用。你只能链接至少有一个参数的方法,所以这样的东西可以起作用:
myFunction arg1
.chain1 arg2
.chain2 arg3
对于jQuery,例如,您可以执行以下操作:
$ ->
$ '#foo'
.and '.bar'
.click ->
alert 'awesome!'
这是因为,与Ruby不同,引用名称没有前导'@'或'::'的名称意味着方法或局部变量,在CoffeeScript中,myFunction
是一个返回函数本身的表达式。因此,myFunction.chain1
和myFunction().chain1
都可以有效并且意味着不同的东西。
但请注意,new
关键字意味着函数调用,因此如果myFunction
是一个(奇怪命名的)构造函数,则可以编写(new myFunction).chain1
,但这又与.chain1
不同{1}}将是原型的属性。
此外,如果您是相关库的作者,您可以使用getters/setters在纯JavaScript中模拟该行为,但我强烈反对。