JavaScriptで連想配列をつくるとき

Javascriptで次の様な連想配列が作りかったとき。
PHPで書くとこの様な...。

<?php
$str = "foo";
$ary = array(
   $str => "bar";
);
?>

連想配列のキーは別途変数で保持られていて、値は直接与えられるケース。
これを、そのままのノリでJavaScriptで書くとこうなる。

str = "foo";
ary = {str : "bar"};

ただ、こう書くと...

alert(ary.foo);   // "undefined" と表示される
alert(ary.str);   // "bar"と表示される

となる。
少し悩んで、こう書いてみた。

str = "foo";
ary = {};
ary[str] = "bar";

alert(ary.foo);  // "bar"と表示される


もう少しスマートに書けないものかと...。
教えて偉い人。