旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

スーパークラスの同名メソッドを使いたい

2007年4月27日

javascriptで

var Super = function(){};
Super.prototype.say = function(){alert("Super!");};
var Sub = function(){};
Sub.prototype = new Super;
Sub.prototype.say = function(){alert("Sub!");};
(new Sub).say();// "Sub!" を出力

こんな感じに、メソッドをオーバーライドしたときに
どうやってスーパークラスのメソッドを呼ぶのかなと思って調べたり聞いたりした。

で、FireFoxの場合は

(new Sub).__proto__.__proto__.say();

こんな感じで呼べるし、opera等の大体のブラウザも書式は違えど呼べるらしいけど、
例によってIE様だけないようだ。

んー、どうやってスーパークラスの関数を呼ぶんだろう。
サブクラスのメソッド名を変えれば、って言われると、その通りなんですけど。