Ext.defineを利用したクラス生成:オーバーライド – Ext JS 4


今回は、Ext.defineで定義されたクラスに対して、メンバをオーバーライドするための手法をご紹介します。

Ext JS 3までは、Ext.overrideメソッドを利用していました。このメソッドを利用することで、Ext JS自体のバグを緊急パッチとして修正できましたし、今後ご紹介する動的ローディングも存在しなかったためデバッグのためにExt.overrideを利用してきました。
しかし、Ext JS 4 では、オーバーライドを行うのは定義されたクラスオブジェクト自身で行います。

次のコードをご覧ください。

定義したoverrideClsオブジェクトには、overrideメソッドが準備されています。
このoverrideメソッドを利用して、所定のメンバをオーバーライドします。

今回のExt.defineで定義したクラスに実装されているoverrideメソッドの特徴として、ただオーバーライドできるだけでありません。
”上書きする前のメソッドもコールすることができる”点が、Ext.overrideとは大きく違う点です。
上書き前のメソッドをコールするためには、this.callOverriddenを利用します。

このcallOverridenメソッドは、通常の関数コール同様、引数を設定したり、戻り値を取得したりすることができます。

このように、クラスメンバのオーバーライド手法も変化しました。
便利になりましたね。

Ext.defineを利用したクラス生成:オーバーライド – Ext JS 4

One thought on “Ext.defineを利用したクラス生成:オーバーライド – Ext JS 4

Comments are closed.