私はJavaScriptでいくつかのオブジェクト(私が推測するクラス)を書いています。クラス B はクラス A を継承します。クラス A には isValid というメソッドがあり、クラス B はそのメソッドをオーバーライドします。YUI 拡張機能を使用して、クラス B がクラス A を拡張するようにしています。
A = function(){
}
A.prototype = {
isValid:function(){
/* Some logic */
return booleanValue;
}
}
B = function(){
}
YAHOO.lang.extend(B, A,{
isValid:function(){
// call class A's valid function
// some more logic for class B.
return booleanValue;
}
});
私ができるようにしたいのは、クラス B の isValid 関数内でクラス A の isValid 関数を呼び出すことです。問題は、クラス B の isValid メソッドからクラス A の isValid メソッドにアクセスできるかどうかです。次の行を使用して、クラス B のコンストラクター内からクラス A のコンストラクターにアクセスできることを知っています。
this.constructor.superclass.constructor.call(this,someParam);
メソッドについても同様のことが可能ですか?そうでない場合、これを行うための良い方法は何ですか? 現在、スーパークラスの isValid メソッド内で呼び出されるヘルパー メソッドを作成しています。
A.prototype = {
a_isValid:function(){
// class A's is valid logic
return booelanValue;
},
isValid:function() {return this.a_isValid();}
}
次に、クラス B から a_isValid 関数を呼び出すことができます。これは機能しますが、可能であれば、スーパー クラスの isValid 関数を直接呼び出すことをお勧めします。