将以下JavaScript编写为CoffeeScript的最短方法是什么?
var obj = {};
(function(){
this.foo = "bar";
}).call(obj);
我可以这样做:
obj = {}
(->
@foo = "bar"
).call obj
但有没有办法摆脱函数定义周围的括号?这几乎可以工作:
do =>
@foo = "bar"
...除了胖箭头操作符'=>'自动将函数绑定到'this'的当前值。有没有办法在使用胖箭头时指定另一个'this'值?
答案 0 :(得分:2)
你无法摆脱括号,但你可以在一行中写出这个功能。
(-> @foo = 'bar').call obj
答案 1 :(得分:1)
你应该接受Dogbert的回答。但是,如果你真的在寻找编写代码的最短方法,那么答案就是
obj.foo = 'bar'
抵制过度使用匿名函数的诱惑。
答案 2 :(得分:0)
您从一开始就得到了答案,但应该添加:
obj = {}
do (obj) ->
obj.foo = "bar"
编译为
(function(obj){
return obj.foo = 'bar';
})(obj);