咖啡脚本、类和函数

Coffeescript, classes and functions

本文关键字:函数 脚本 咖啡      更新时间:2023-09-26

在JavaScript中,我会设置一个这样的类:

var SomeClass = (function()
{
    var _this   = { };
    var privateVar = 'foo'
    _this.publicVar = 'bar'
    function privateFunction()
    {
        return privateVar;
    }
    _this.publicFunction = function()
    {
        return _this.publicVar;
    }
    return _this;
})();

这很好,因为我可以通过调用SomeClass.publicFunction()_this.publicFunction()来引用publicFunction privateFunction

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

我认为这会有所帮助:


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

你的问题令人困惑。

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

class Foo
  constructor: ->        
  m1: ->
    Foo.classMethod()
  m2: ->
    @privateMethod()
    @m1()
Foo.classMethod = ->

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

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

f = new Foo()
f.m2()

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

看看

这个看看上面的咖啡脚本编译的javascript。

私有方法中调用公共方法

方法 A 是私有的,方法 B 是公共

阿福类  call_a: ->    a.呼叫(本)  乙: ->    警报"B 已调用"  a = ->    警报"已调用"    @b()obj = 新 Fooobj.call_a()