2016-05-03 13 views
0

私は、別のクラスを継承したCoffeeScriptでいくつかのクラスを持っています。チェーンは次のようになります。第3レベルの継承が機能しない

  • Page
      • YesNoChooserPage
    • CommentPage
    • SimplePage

これは見事に動作しますが、私は、具体的MultipleYesNoChooserPage extends YesNoChooserPage、ChooserPage鎖の1つの以上のレベルを導入しようとすると、突然、私はエラーを取得する:

Uncaught TypeError: Cannot read property 'prototype' of undefined 

は、私はクラスの存在をチェックしました次の結果:

  • Page
  • 存在は
  • 存在します
  • YesNoChooserPage

を比較するには(当然、未定義)

  • MultipleYesNoChooserPageが存在していない(未定義)が存在しません:MultipleYesNoChooserPageなし は、定義された:MultipleYesNoChooserPageで enter image description here

    が定義: enter image description here

    CoffeeScriptには私が知りません(そして何も見つけることができません)、または他の理由がありますか?

    クラスは正しい順序でロードされます。

  • +0

    音が奇妙です。より完全なコード例がありますか? – ArcSine

    +0

    'MultipleYesNoChooserPage'にはまだ追加機能やオーバーライド機能はありません。それはすでに存在するだけで既に破れています。私はそれを残して、すべてうまく動作します。また、 'MultipleYesNoChooserPage'を他の' Page'ベースのクラスを拡張するように変更した場合、私は何のエラーも受けません(しかし、当然のことながら、どんな機能も得られません)。 –

    +1

    画像ではなくテキストを記載してください。障害を引き起こすコードの最小限の例を含めてください。 –

    答えて

    1

    さて、私は解決策を得ました。これは偶然に起こりました。

    これを再現しようとしているうちに、プロジェクト外では発生しないことに気付きました。それは私をさらに混乱させたので(私は、クラスの単純な存在が他のクラスを消滅させる方法を教えています)、ファイルを完全に削除して再作成しました。それは働きました。私の混乱はわかりにくいレベルに上昇しました。それから私は打ちました:

    ロードされるファイルの順序を強制するために、それらはむしろ奇妙です。

    • YesNoChooserPage.coffee
    • YZMultipleYesNoChooserPage.coffee

    私のエディタ(崇高テキスト)が意図した順序でそれらを示していますが、私は気づいた:この場合、これは次のように命名されているものYesNoChooserPageとMultipleYesNoChooserPageです、端末はそうしない。私がファイルを再作成したとき、私は誤ってその名前を「YzMultipleYesNoChooserPage」と命名し、異なる順序を付けました。これは働いた。

    さらに別のことを学びました。

    関連する問題