http://reader.livedoor.com/js/common.js の Class.create とかのあたりを読んだ。少ししか進めなかったけど、そのぶん時間をかけて丁寧にコードを追って、ちゃんと理解して進むことを心がけた。
やっぱり this が何をさしてるのかわからなくなることがとても多い。どういうときに何を指し示すキーワードなのか基本を押さえないといけない。 prototype にオブジェクトをつっこむとき new base_class; のように new してるのは、 new しないと return this みたいなのがおかしくなる(空の関数オブジェクトじゃなくてグローバルな、つまり window オブジェクトがかえってしまうとか)のを避けるのと、あと受け取ったオブジェクトそのものをプロトタイプチェーンにいれてしまうとオブジェクトへの参照が継承されるのでその後オブジェクトが書き換えられたときに影響が出てしまうから、 new で新しいオブジェクトを作るのかなと思った。
あと Array.prototpye[mn] みたいなのは Ruby でいえば obj.send(method) とか、変数のなかに関数名がはいってて動的に指定したいんだけど JavaScript の場合 dot で呼び出すと変数展開されないのでオブジェクトに対して添字でアクセスしているということだと理解できた。