2012-04-09 7 views
0
class Example 
    constructor: -> 
    $.each [1, 2, 3], (key, value) -> 
     @test = value 
    return @test 
    render: -> 
    alert @test 

example = new Example() 
example.render()​​​​​​​​​​​​​​​​​​​​​​ 

私はCoffeeScript(+ jQuery)を使用しています。これは@test変数に値3を取得するクラスの例です。しかし、これは起こらない、あなたは私を助けることができますか?CoffeeScriptクラス変数

+0

コンストラクタは何も返しません。クラスのインスタンスは、クラスをインスタンス化するときに常に返されます。あなたの質問とは関係がありませんが、私はあなたに知らせるべきだと思いました。 – Sandro

+0

他の人が...コンストラクタを読んで訂正する*絶対に値を返すことができます。 *オブジェクト*(つまり、数値や文字列などのプリミティブな値は返さない)を返す必要があります(http://es5.github.io/#x13.2.2、手順9.と10.を参照) – ELLIOTTCABLE

答えて

3

$.eachは有効範囲内の関数を受け入れます。したがって、this変数は期待したものではありません。

作業コード:

class Example 
    constructor: -> 
    $.each [1, 2, 3], (key, value) => 
     @test = value 
    return @test 
    render: -> 
    alert @test 

example = new Example() 
example.render()​​​​​​​​​​​​​​​​​​​​​​ 

何が変わりましたか? $.eachコールの矢印を確認すると、太い矢印に変わります。脂肪の矢印は、この変数を設定して、@...を使用してスコープを予想どおりにするときに使用します。

詳細については、「機能バインディング」セクションのhttp://coffeescript.orgを確認してください。

関連する問題