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
我有一个文件 '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