オブジェクト指向に縛られる

C/C++Java とかで忌み嫌われる実装継承が多発される Javascript は、なんとなく居心地が悪い気がします。あれです、prototype ベースってやつ。

Derived.prototype = Base.prototype

もともと言語上で継承というものがないので、is-a の関係が成り立たず、has-a になるか、このような継承方法を行うしかないわけです。ただ、C++ でも template ならば別に is-a ではなくても、文字通り汎用な関数が書けるわけで、そういう意味では少し Javascript を身近に感じられるかもしれません。

function (obj) {
  // obj には hoge というプロパティさえあればいい
  document.write(obj.hoge);
}

もちろん関数に限らず、std::vector みたいな汎用クラスも。

function MyArray(Type, size) {
  this.items = [];
  for (var i = 0; i < size; ++i) {
    this.items[i] = new Type();
  }
}

まぁこんなもん要りませんけどね。なんとなく最後の配列添字のところで重量言語屋さんを釣りたかっただけです。Array.push よりもこの方法が速いとどこかに書いてあったんですが、忘れました。