我正在迁移一些代码,之前的开发人员创建了一个巨大的javascript文件,其中定义了几个类。我试图将这些分成单独的文件。假设我有以下课程:
define[], ->
class Row
...
和子类
define["Row"], (Row) ->
class SpecialisedRow extends Row
...
我需要一个“工厂”课程:
define ["Row", "SpecialisedRow"], (Row, SpecialisedRow) ->
class RowFactory
@create: (foo) ->
if foo
return new Row()
else
return new SpecialisedRow()
允许我写这样的代码;
row = RowFactory.create(true)
row = RowFactory.create(false)
我发现这适用于Row,但在工厂中“SpecialisedRow”为空。我已经看了很长一段时间,尝试了所有常见的解释(错别字等) - 有谁知道这里可能会发生什么?
编辑:
如果我不从Row继承,它可以正常工作。因此,如果Specialized行只是:
define [] ->
class SpecialisedRow
...
然后没关系。但我需要它继承行!可能会出现循环依赖或者其他事情吗?
答案 0 :(得分:0)
固定。这是由于流氓“回归”在SpecialRow类的最底层不合适。这导致模块导出null。