私は方法を連鎖しようとするのをやっていて、私の例ではうまくいきませんでした。矢印関数を使用してメソッド連鎖を実現する方法はありますか?
var object = {
method1:() => {
console.log('method1');
},
method2:() => {
console.log('method2');
}
};
object.method1(); // works fine
object.method2(); // works fine
object.method1().method2(); // merp
私は上記の起こっている状況は、デフォルトでwindow
コンテキストが設定されており、第2の方法は、トリガしようとしたときであるので、矢印の機能は、独自のthis
コンテキストを持っていない知っている、それはwindow
オブジェクトでmethod2
を見つけようとしています(何が起こっているのか間違った解釈であれば私を修正してください)。in order to achieve method chaining you have to return this
自然に、これは問題です。
私は単純な解決方法は上記の矢印機能の代わりにfunction()
を使用するのが簡単だと知っていますが、矢印機能を使ってメソッド連鎖を実現する方法があるのか、これは簡単ではありませんか?私が読んだ
関連質問:Arrow function vs function declaration/expressions: Are they equivalent/exchangeable?
それがすでに宣言されているとして、あなたは 'object'を返すことができます(this''として機能するように) –
あなたが連鎖機能に必要がある場合は、意志「これ」を返さなければならない。また、*私は矢印関数がこれを持っていないことを知っている* ???矢印関数は親コンテキストを関数にバインドします。 – Rajesh
@ibrahimmahrir興味深いことに私は実際にそれをするとは思わなかった。あなたはそれを答えとして掲示するべきです:しかし、はい、それは私のシナリオに対する非常に具体的な答えです。あなたがそれを避けたい理由があると思います。メソッド連鎖が必要な場合は、 'function()'を使う必要があるというコンセンサスですか? – aug