普通にextendsで継承すると、大体は問題なく動きます。
ですが、それだけだとオーバーライドができないので、以下のようにprototypeを手動でセットします。
class SubRectangle extends phina.display.RectangleShape {
constructor (option) {
super(option)
Object.setPrototypeOf(this, SubRectangle.prototype) // ←これ
}
render (canvas) {
console.log('ex: renderをオーバーライドして何かする')
super.render(canvas)
}
}
以上です。。
軽く調べたところ、setPrototypeOfは最適化がされないためパフォーマンス上よろしくない場合があるようです。
(ただ、babelでclassの継承をトランスパイルしたらsetPrototypeOfが使われた気がするので結局変わらないかもしれません)
もしも他にスマートな方法をご存じの方がおりましたら教えていただきたいです。
2018/12/08 追記:
Negiwine_jpさんの記事『phina.jsとclass構文について考察する』もぜひご参照ください!