1

在 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我可以publicFunction通过调用SomeClass.publicFunction()_this.publicFunction()

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

4

3 回答 3

2

我认为这会有所帮助:


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

于 2012-06-22T14:09:20.613 回答
1

你的问题令人困惑。

如果你想创建一个类方法,你可以这样做

class Foo
  constructor: ->        

  m1: ->
    Foo.classMethod()

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

Foo.classMethod = ->

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

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

f = new Foo()
f.m2()

这将创建一个新的 Foo实例,然后m2在该实例上调用。 m2依次调用类方法 classMethod

检查一下以查看上述咖啡脚本编译到的 javascript。

于 2012-06-22T13:59:17.870 回答
0

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

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

Foo 类
  call_a:->
    a.call(这个)
  乙:->
    警报“b 调用”
  一个=->
    警报“被调用”
    @b()

obj = 新的 Foo
obj.call_a()

于 2012-06-22T14:58:31.493 回答