鉴于
class Super:
constructor: (@params) ->
foo: ->
...
class Child extends Super:
internalFoo = ->
...
internalBar : ->
...
(exports ? this).Super = Super
(exports ? this).Child = Child
我知道这个例子会“污染”全局命名空间,但为了简单起见:我只能在foo()
上调用Child
var c = new Child();
c.foo(); // works
c.internalFoo(); // internalFoo is undefined
c.internalBar(); // internalBar is undefined
我在这里缺少什么?我想在浏览器中运行我的coffeescripted代码。
答案 0 :(得分:2)
我可以毫无问题地致电 internalBar 。
无法调用internalFoo ,因为您没有将其定义为类的成员函数,也不能将其定义为类函数。通过“=”定义它将使它仅作为变量在类体内关闭。
如果你想让它成为一个类方法,请将其定义为
class Child extends Super
@internalFoo: ->
至于无法调用 internalBar 我会假设您有缩进错误, internalBar 被定义为 internalFoo 中的anon函数。 如前所述,因为您没有将其定义为成员方法。