本題
JS書いてて、オブジェクトのプロパティに変数を割り当てたいこと、よくありますよね。
CoffeeScriptでは以下のように書けます。
sample.coffee
$ "input"
.each ->
_key = $(@).attr "name"
_val = $(@).val()
_object = "#{_key}" : _val
コンパイルするとこうなります。
sample.js
$("input").each(function() {
var _key, _object, _val, obj;
_key = $(this).attr("name");
_val = $(this).val();
return _object = (
obj = {},
obj["" + _key] = _val,
obj
);
});
最初これをみたとき、なにやってんだろ?と思いましたが
ここで使われているのが、カンマ演算子でした。
パーフェクトJavaScriptにももちろん書いてありました。
参考文献はよく読めってことですね。
ついでに
ES6から、下のような記述が可能になるらしい。
es6.sample
var key = 'hoge';
var obj = { [key]: val };