スーパークラスの同名メソッドを使いたい
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様だけないようだ。
んー、どうやってスーパークラスの関数を呼ぶんだろう。
サブクラスのメソッド名を変えれば、って言われると、その通りなんですけど。
サブクラスのメソッド名を変えれば、って言われると、その通りなんですけど。