IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Prototype.js および Script.aculo.us をけっこう高速化する方法

$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 文をすべてやめる。これでかなりスピードアップ!