プレーンなJavascript(Coffescriptなし)のSpine.jsを使用しています。ドキュメント
で説明されている構文を使用して、親クラスのメソッドを呼び出しています。
具体的には:this.constructor .__ super __。someFunction.apply(this、arguments)
これは、直接の子クラスが直接の親クラスと呼ばれる場合に正常に機能します。しかし、孫クラスを追加すると、すべての地獄が解き放たれます。孫クラスのインスタンスでメソッドを呼び出すと、無限ループが発生します。ここに示すクラス階層を実装することでこれを示すjsFiddleがあります。
MyObjClass(メソッドsayHi()を実装) ^ | My2ndObjClass(メソッドsayHi()はスーパークラスを呼び出します) ^ | My3rdObjClass
My3rdObjClassのインスタンスでsayHi()が呼び出されると、無限ループが発生します(Chromeコンソールは最大スタックエラーを報告します)。
私の推測では、sayHi()がMy3rdObjで実行されると、親クラスの実装が自然に実行されます(つまり、My2ndObjClassのsayHi()が実行されます)。My2ndObjClassのsayHi()は、superをMyObjClassではなくMy2ndObjClassに解決するため(予想どおり)、superの呼び出しは再帰呼び出しになり、離れて行くと... StackOverflow;)
それで、私は何か間違ったことをしていますか、それともこれはSpineの制限ですか?これを回避するための賢い方法があると思いますが、GoogleやRTFMでは見つかりませんでした。