CoffeeScript class 结果为空对象

CoffeeScript class results in empty object

我有一个文件 'a.coffee',包含以下代码:

class Options
  options:
    # ...

  setOption: (name, value) ->
    # ...

  getOption: (name) ->
    # ...

# Export the Options class.
module.exports = Options

和文件 'b.coffee':

Options = require './a'
console.log new Options()

当然,预计当我运行b.coffee时,我会看到这样的输出:

{
  options: ...,
  setOption: function (name, value),
  getOption: function (name)
}

但是,我得到 {}

我该如何解决这个问题?

你的期望是错误的。 class 级别的所有内容都在对象的原型中,因此给出:

class C
  p: 6
  m: ->
o = new C

对象 o 将为空,因为没有实例变量,但是如果您查看 "class"(通过 Object.prototype.constructor 获取 "class" 和 ::得到原型):

o.constructor::p

你会看到的。

如果您添加一些实例变量(即真正属于您的对象的一部分):

class C
  constructor: -> @p = 6

然后您将在对象中看到它们:

c = new C
console.log c
# { p: 6 } will appear in the console