10623

[code]

    obj =
      flag: true
      toggle_flag: ->
        flag = !flag
    
    obj.flag        # true
    obj.toggle_flag # false
    
    obj.flag = true
    obj.flag        # true
    obj.toggle_flag # false
    
[/code]

このような振る舞いのオブジェクトを作りたいのですが、  
`toggle_flag`の中で`obj.flag`を参照するにはどうしたらよいのでしょうか。  
`toggle_flag`の中で`this.flag`とするのかと思ったのですが、この場合`this`は`toggle_flag`をさすのか`obj`をさすのかわからず、困っています。

正しい知識を得たいので詳しく教えていただけないでしょうか。


CC BY-SA 3.0
2015-05-26T00:29:16.567
10620
2015-05-26T01:06:40.267
9149
question
javascript coffeescript
CoffeeScriptの値の参照の参照のしかたを教えて下さい


コンパイル結果は以下のようになります。

[code]

    var obj;
    obj = {
      flag: true,
      toggle_flag: function() {
        var flag;
        return flag = !flag;
      }
    };
    //...
    
[/code]

もし、`obj.toggle_flag()`で`obj.flag`を反転させ、その値を返したいのであれば

[code]

    obj =
      flag: true
      toggle_flag: ->
        @flag = not @flag
    
    obj.flag          # true
    obj.toggle_flag() # false
    
    obj.flag = true
    obj.flag          # true
    obj.toggle_flag() # false
    
[/code]

としてください。

> [関数コンテキスト - > 和訳版 The Little Book on CoffeeScript -
> Syntax](http://minghai.github.io/library/coffeescript/02_syntax.html)


CC BY-SA 3.0
2015-05-26T01:06:40.267
10623
2015-05-26T01:06:40.267
9834
10620
answer