function.call в CoffeeScript - PullRequest
       4

function.call в CoffeeScript

0 голосов
/ 20 августа 2011

Какой самый короткий способ написать следующий JavaScript как CoffeeScript?

var obj = {};

(function(){
  this.foo = "bar";
}).call(obj);

Я могу сделать это:

obj = {}

(->
  @foo = "bar"
).call obj

Но есть ли способ избавиться от скобок вокруг определения функции? Это почти сработает:

do =>
  @foo = "bar"

... за исключением того, что оператор жирной стрелки '=>' автоматически привязывает функцию к текущему значению 'this'. Есть ли способ указать альтернативное значение this при использовании жирной стрелки?

Ответы [ 3 ]

2 голосов
/ 20 августа 2011

Вы не можете избавиться от скобок, но вы можете написать эту функцию в одной строке.

(-> @foo = 'bar').call obj
1 голос
/ 20 августа 2011

Вы должны принять ответ Догберта.Но если вы буквально ищете самый короткий способ написания своего кода, ответ будет

obj.foo = 'bar'

Не поддавайтесь искушению чрезмерно использовать анонимные функции.

0 голосов
/ 21 августа 2011

У вас был ответ с самого начала, но это следует добавить:

obj = {}

do (obj) ->
  obj.foo = "bar"

, который компилируется в

(function(obj){
  return obj.foo = 'bar';
})(obj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...