$A
$A という関数を使うと、Array もどきオブジェクト(NodeList や Arguments など)を Array オブジェクト化することができる。便利だが、この関数を Enumerable インタフェースを実装するために使用するのは、あきらかにおかしい。
そこで、以下のようなものを定義してみる。
var $E = Enumerable.from = function(iterable) { iterable._each = Array.prototype._each; Object.extend(iterable, Enumerable); return iterable; };
これを、 $A(〜).each とかしてるところに使う。 $E(〜).each こうする。 $E の実行速度は $A の 7 〜 4 倍です。
with(Element)
effects.js の with 文をすべてやめる。これでかなりスピードアップ!