読者です 読者をやめる 読者になる 読者になる

良く忘れること

JavaScriptとは愛だ

すでにプログラムができる男達にとって、JavaScript について覚えておくことは次の三つだ!これしかない!でもすぐ忘れる!

  1. this キーワードだけが、 prototype scope chain へと僕らを導く「唯一の」術だ
  2. 「設計図->設計図->設計図->生」と継承していくのが Java/C#/AS3 なら、「設計図->生->設計図->生->設計図->生」と繋げていくのが JavaScript だ。
  3. this からなんも考えずにさかのぼっていける "暗黙の prototype chain" には、そのうちのしか繋がってない
  4. Object の constructor プロパティって、インスタンスが持ってるんじゃなくて、コンストラクタそのものの prototype が持ってる

勢い余って四つになってしまった。昨日、四つ目を完全に忘れていて、はまりにはまった。Prototype とか jQuery に任せずに継承系のライブラリ書いてたらはまった。そんなことすんなよ、という声が聞こえる。

よく考えると…、そらそうだ。コンストラクタ関数なんていう重たいものを、いちいちインスタンスの一個一個が持ってたらそれだけでメモリがすごーく無駄になりそうな気がする。prototype 経由で共有してなんぼである。しかしどんなライブラリも継承の時に

SubClass.prototype = new SuperClass();
SubClass.prototype.constructor = SubClass;

ってやってるのを見てあんまなんも考えてなかったこれまでの自分には猛省を促したい。この後、3つ以上の多重多段継承したあとのスーパークラスのメソッド呼び出しを書くために昨日1時間かかっています。何やってるんですか!!実装してください!私!。