JSでリアクティブフレームワークをテストしようとしているオブジェクトがありますイベントサブスクリプションでは、サブスクリプションが定義されているクラス。Reactive Frameworkサブスクリプション内のインスタンス変数/メソッドをJavaScriptで使用する
function MyClass()
{
var DoSomething = function(a,b) { ... }
var InstanceVariable = 1;
this.uiEvent = uiDiv.jqueryUiWidget("widget")
.toObservable("change")
.Subscribe(
function (event)
{
// Want to call the instance method in the enclosing class
DoSomething(1,2);
});
this.uiEvent2 = uiDiv.jqueryUiWidget("widget")
.toObservable("change")
.Subscribe(
function (event)
{
// Want to use the instance variable within here
alert(InstanceVariable);
});
}
「this」スコープがサブスクリプションのスコープなので、どうすればよいですか?何らかの方法でサブスクリプションを設定するときに、関数/変数を渡す必要がありますか?
これを実行しようとすると、すべてのブラウザでインスタンス変数またはメソッドが存在しないというエラーが表示されます。インスタンスメンバーを呼び出す関数のスコープ内の「this」は、あなたのコードは動作するはずのようにオブザーバーのでOnNextの機能を有し、OnCompletedなど
多くのおかげで、
ポール
Markusにお答えしてくれてありがとうございます。はい、私はクロージャとインスタンス変数について知っていますが、サブスクリプション内の "this"リファレンスは囲むオブジェクトを参照していません。私は観察している(エーヘン)。 –
'this'キーワードが外側(MyClass)ではなく内部メソッド自体を参照することは間違いありません。あなたは 'this'キーワードを使用していますか?内部メソッドの中で 'outerThis'を使用することができます。 –
ありがとうMarkus - var outerThis = this; (今は明らかです...私は、その一時変数を割り当てることなく、よりエレガントなアプローチを探していました)。 –