Edited at

ES6のclass構文でphina.jsのクラスを継承する

普通に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構文について考察する』もぜひご参照ください!