在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
的类,并在类中获取一个函数来引用该类中的另一个函数?
答案 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 = ->
注意最后一行。类方法是存在于定义类的函数上的方法。
如果你想从另一种方法调用一个方法,那没什么大不了的。此示例中的m1
和m2
证明了这一点。请注意,每个调用的范围都限定为this
,这是您的类Foo的当前实例。所以你可以做到
f = new Foo()
f.m2()
将创建Foo的新实例,然后在该实例上调用m2
。 m2
反过来调用类方法 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()