2012-06-22 36 views
1

在JavaScript中我会成立专班,如:的CoffeeScript,类和函数

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

    _this.publicVar = 'bar' 

    function privateFunction() 
    { 
     return privateVar; 
    } 

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

    return _this; 
})(); 

这是罚款,在privateFunction我可以在我的CoffeeScript要么调用SomeClass.publicFunction()_this.publicFunction()

现在参考publicFunction我试图建立我的班级,以便我可以调用班级功能,我该如何解决这个问题?如何在coffeescript中创建一个名为Foo的类并在该类中获得一个函数来引用该类中的另一个函数?

回答

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。

+0

因此,如何“私人”功能? –

+0

已更新 - 您可以在构造函数中进行更新。查看底部的链接,以便您可以看到js – hvgotcodes

+0

@AhmedNuaman,请参阅http://stackoverflow.com/questions/10612293/how-to-make-method-private-and-inherit-it-in-coffeescript re私人 – hvgotcodes

2

我认为这将有助于:

 

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

那么如何'私人'功能? –

0

调用私有方法内的公共方法

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

 

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

obj = new Foo 
obj.call_a()