JavaScriptと、関数を別の関数のパラメーターとして渡すことに問題があります。
私たちがクラスの中にいて、そのようなことをしているとしましょう:
this.get('target').update(this.onSuccess, this.onFail);
- 'target'は、update()というメソッドを持つJavaScriptオブジェクトです。
- このメソッドを呼び出して、呼び出し元クラスの2つのメソッドをパラメーターとして渡します
そのupdate-method内でいくつかのことが起こり、それが完了すると、そのメソッドはonSuccess-methodまたはonFail-methodのいずれかを呼び出す必要があります。これは次のようになります。
update: function(onSuccess, onFail) {
if(true) {
onSuccess();
} else {
onFail();
}
}
今まで、すべてがかなりうまく機能します!しかし、caller-class(上記のupdate-methodを呼び出すもの)で定義されているsuccess / fail-methods内では、this-pointerを使用しています。
onFail: function() {
alert('Error: ' + this.get('target').error);
}
このポインタがいくつかの問題を引き起こすこと。メソッドが最初に定義されたクラスではなく、「ターゲット」オブジェクトを指します。
私が今やらなければならないことは、メソッドを再び機能させるために、'target'クラス内のonSuccess/onFail呼び出しの直前にthis-pointerを更新することです。しかし、これは「左側の無効な割り当て」エラーのために機能しません。
そのようなシナリオのベストプラクティスは何ですか?何か案は?事前にthx!!!
乾杯