0

给定

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

我在这里缺少什么?我想在浏览器中运行我的咖啡脚本代码。

4

1 回答 1

2

我可以毫无问题地调用internalBar 。

internalFoo不能被调用,因为你没有将它定义为类的成员函数,也没有定义为类函数。通过“=”定义它将使它只能作为一个变量在类体内关闭。

如果您想让它成为一个类方法,请将其定义为

 class Child extends Super
     @internalFoo: -> 

至于无法调用internalBar我会假设您有一个缩进错误,并且您的internalBar被定义为 internalFoo 中的匿名函数。如前所述,它不可用,因为您尚未将其定义为成员方法。

于 2013-07-25T09:47:55.737 回答