Coffeescript,类和功能

时间:2012-06-22 13:48:49

标签: javascript coffeescript

在JavaScript中,我设置了一个类:

var SomeClass = (function()
{
    var _this   = { };
    var privateVar = 'foo'

    _this.publicVar = 'bar'

    function privateFunction()
    {
        return privateVar;
    }

    _this.publicFunction = function()
    {
        return _this.publicVar;
    }

    return _this;
})();

这很好privateFunction我可以通过调用publicFunctionSomeClass.publicFunction()来引用_this.publicFunction()

现在在Coffeescript中我正在尝试设置我的课程以便我可以调用类函数,我该怎么做呢?如何在coffeescript中创建一个名为Foo的类,并在类中获取一个函数来引用该类中的另一个函数?

3 个答案:

答案 0 :(得分:2)

我认为这会有所帮助:


class Foo
  a: ->
    alert 'a invoked'
  b: ->
    @a()
    alert 'b invoked'
new Foo().b()

答案 1 :(得分:1)

你的问题很混乱。

如果您想创建类方法,可以像

那样创建
class Foo
  constructor: ->        

  m1: ->
    Foo.classMethod()

  m2: ->
    @privateMethod()
    @m1()

Foo.classMethod = ->

注意最后一行。类方法是存在于定义类的函数上的方法。

如果你想从另一种方法调用一个方法,那没什么大不了的。此示例中的m1m2证明了这一点。请注意,每个调用的范围都限定为this,这是您的类Foo的当前实例。所以你可以做到

f = new Foo()
f.m2()

将创建Foo的新实例,然后在该实例上调用m2m2反过来调用类方法 classMethod

Check this out查看上述coffeescript编译的javascript。

答案 2 :(得分:0)

在私有方法中调用公共方法

方法a是私有的,方法b是公共的


class Foo
  call_a: ->
    a.call(this)
  b: ->
    alert 'b invoked'
  a = ->
    alert 'a invoked'
    @b()

obj = new Foo
obj.call_a()