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;
})();

これはprivateFunctionpublicFunction電話SomeClass.publicFunction()または_this.publicFunction()

現在、Coffeescriptで、クラス関数を呼び出せるようにクラスを設定しようとしていますが、これを行うにはどうすればよいですか?Fooと呼ばれるcoffeescriptでクラスを作成し、そのクラスの関数を取得して、そのクラスの別の関数を参照するにはどうすればよいですか?

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各呼び出しは、クラス Foothisの現在のインスタンスである にスコープされていることに注意してください。だからあなたはできる

f = new Foo()
f.m2()

これにより、Fooの新しいインスタンスm2が作成され、そのインスタンスが呼び出されます。 次に、クラス メソッドm2を呼び出します。 classMethod

これをチェックして、上記の coffeescript がコンパイルされる JavaScript を確認してください。

于 2012-06-22T13:59:17.870 に答える
0

プライベート メソッド内でのパブリック メソッドの呼び出し

メソッド a はプライベート、メソッド b はパブリック

クラスフー
  call_a: ->
    a.call(これ)
  b: ->
    アラート「bが呼び出されました」
  = ->
    アラート「呼び出された」
    @b()

obj = 新しい Foo
obj.call_a()

于 2012-06-22T14:58:31.493 に答える