Requirejs和coffeescript - 如何创建一个可以访问类及其子类的模块?

时间:2015-08-04 13:31:55

标签: coffeescript requirejs

我正在迁移一些代码,之前的开发人员创建了一个巨大的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
    ...

然后没关系。但我需要它继承行!可能会出现循环依赖或者其他事情吗?

1 个答案:

答案 0 :(得分:0)

固定。这是由于流氓“回归”在SpecialRow类的最底层不合适。这导致模块导出null。