私は、私がかなり重要だと思う方法を知らないことに気付きました。これは、 'サブクラス'、つまりインスタンス上の入れ子オブジェクトを作成することですそのインスタンスを参照する関数を持っています。次のコードを使用してオブジェクトのNestクラスのメソッドがインスタンスのスコープを維持する
sequence = new Sequencer(2, [true, true])
sequence.is_valid # returns true or false
:
たとえば、私はこれを行うことができるようにしたいと思い
class Sequencer
Validations:
correct_sequence_length: ->
@division == @sequence.length
positive_length: ->
@division > 0
constructor: (args) ->
{ @sequence, @division } = args
is_valid: ->
@Validations.correct_sequence_length() &&\
@Validations.positive_length()
Validations
がオブジェクトであるため、それは、それはそれ自身を持っているように見えることがそのメソッドのthis
はインスタンスを参照するのではなく、Validations
オブジェクトを参照します。つまり、@sequence
または@tempo
にアクセスできません。私も矢印機能を使ってみましたが、うまくいきませんでした。
これを処理してValidations
を独自のクラスにする最良の方法はありますか?
のCoffeeScriptを使用すると、
validations
オブジェクトをしなかった場合アロー機能が働くだろうまたはES6?決定してください、彼らはかなり異なっています。 – Bergi
プロパティをネストする場合は[はい、余分なクラスが必要です](http://stackoverflow.com/q/15884096/1048572)。 – Bergi
@Bergi私はcoffeescriptが好きですが、v2はES6クラスを出力するので、必ずしも無関係ではありません。とにかく私はそれを見て興味があると思うだろうが、あなたはES6で動作するソリューションを持っています。 –