JavaScriptで連想配列を回す

Perlにおける下のようなことをJavaScriptでしたいんだけど、わからない。

foreach my $key (keys %hash){
    ......
}

自分で答えを書いてみる。
prototype.jsを使ってる場合、Hashオブジェクトを利用すれば、keys()やvalues()が使えるらしい。
for( var key in $H(hoge).keys() ){}
と、思ったんだけど、だめだ。 JavaScriptのfor〜inはこういう用途では使えないらしい。 詳しく書くのは面倒だけどとにかくだめ。ということで、

var hash = $H(hoge);
var keys = hash.keys();
for(var i=0; i<keys.length; i++){
    ......
}

これで思ったんですが、こういうコトさせる場合JavaScriptよりPerlのほうが遙かに強力な気がします。
もちろん僕がPerlに慣れてると言うこともありますが、Perlだったらgrepやらmapやら使って1行で済む処理が長々と書かないといけないことが多々あります。
ちょっとうんざり。 クライアント側もPerlでかければなー。 サーバ側とクライアント側を両方同じ言語で書ければかなり生産性上がると思うんですが……。
ところでどっこい。 元某P氏に死んだことにされていましたので一応生存報告しておきましたとさ。