こもろぐ @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

広告:本ブログで紹介している書籍等商品の紹介でAmazonアソシエイトを利用していることがあります。

継承

JavaScript 第5版 p.170
callの有効な使い方キターッ。
サブクラスにしたいコンストラクタ関数のなかで、SuperClass.call(this, arg1, ...)と呼び出す。すると、SuperClass()関数を、「呼び出した場所のメソッドのように」関数を動かせる。(SuperClassの中でプロパティに値をセットするなら、それはサブクラスのプロパティとして参照できる)
それはいいのだけれども、それから後が大変です。サブクラスのprototypeプロパティを巡って3,4個の修正を加えなければなりません。大変。
SubClass.prototypeに幾つかの修正を加えた後で、サブクラス独自のプロトタイププロパティを設定していきます。
そうすれば、継承を表現出来るようです。instanceof演算子も有効。

var subc = new SubClass();
alert(subc instanceof SubClass); // true
alert(subc instanceof SuperClass); // true
//すべてのオブジェクトのprototypeプロパティはObjectのプロパティを継承しているので
alert(subc instanceof Object); // true
alert(subc instanceof Array); // false