prototype.js のクラス拡張: 仕様変更

prototype.js の Enumerable を自分のクラスで利用しようと思ったところ、幾つか問題にぶつかったため、以下の点を修正します。

include メソッドの名前変更

Mixin のための include メソッドが Enumerable のメソッドとカブることには元々気付いていました。メソッド名に "?" が使えないため、疑問形と叙述系 (命令形?) が区別できないのが問題なんですが、これを Enumerable の側で何とかして欲しいなぁと思って放置してたんです。

これがマズいという事にようやく気付きましたので、変更します: Mixin のためのメソッドということで、"mixin" です。

Mixin の新しい挙動

以前の実装ではオブジェクトをインクルードすると無条件にインスタンス・メソッド (または変数) を上書きしていましたが、これを止めます。つまり、すでに定義されていれば上書きしないようにします。

Mixin によって上書きされて嬉しいケースよりも、折角クラス特有のメソッドを定義しているのに上書きされて困る、というデメリットの方が重大、というのが判断の理由です。

したがって、プレースホルダとして空の関数を定義しているような場合には Mixin が機能しなくなります。

コード