三级继承不起作用

时间:2016-05-03 13:58:13

标签: javascript inheritance coffeescript

我在CoffeeScript中有一些类,它继承自另一个类。链看起来像这样:

  • Page
    • ChooserPage
      • YesNoChooserPage
    • CommentPage
    • SimplePage

这很好用,但是当我尝试向ChooserPage链中引入一个级别,特别是MultipleYesNoChooserPage extends YesNoChooserPage时,我突然收到错误:

Uncaught TypeError: Cannot read property 'prototype' of undefined

我检查了类的存在并得到了以下结果:

  • Page存在
  • ChooserPage存在
  • YesNoChooserPage不存在(未定义)
  • MultipleYesNoChooserPage不存在(显然是未定义的)

比较: 没有定义MultipleYesNoChooserPage: enter image description here

定义了MultipleYesNoChooserPage: enter image description here

CoffeeScript是否有一些我不知道的最大限制(并且找不到任何内容)或者还有其他原因吗?

按正确的顺序加载类。

1 个答案:

答案 0 :(得分:1)

好的,我得到了解决方案,这是偶然发生的。

在尝试重现这一点时,我注意到它不会发生在项目之外。因为它让我更加困惑(我的意思是,一个类的简单存在如何让另一个消失)我完全删除了文件并重新创建它。它奏效了,让我的困惑升到难以理解的程度。然后它让我感到震惊:

要强制加载文件的顺序,它们的名称相当奇怪。在这种情况下,这就是YesNoChooserPage和MultipleYesNoChooserPage被命名为:

  • YesNoChooserPage.coffee
  • YZMultipleYesNoChooserPage.coffee

我的编辑器(Sublime Text)按照预定的顺序列出它们,但我注意到,终端没有。当我重新创建文件时,我不小心将其命名为“YzMultipleYesNoChooserPage”,导致不同的顺序。然后就行了。

了解了另一件事。