私はSignalRを試しています。クライアントが定義したコールバックがjavascriptオブジェクトに属するメソッドであるとき、その関数の中で(SignalRから呼び出されたとき) 'this'はハブオブジェクトを参照します。私の質問は、コンテナのJavaScriptオブジェクトを取得して、変数と関数にアクセスできるようにする方法です。SignalRクライアントサイドコールバックはオブジェクト関数であり、 'this'
var gameLoad = {
init: function() {
// create the network object and hook it's functions update for loading
this.network = $.connection.testHub;
console.log(this.network);
this.network.client.hello = this.sayHello;
},
// called from signalR 'this' is the network hub object now when inside the function
sayHello: function() {
console.log("Test 2!");
console.log(this); // <-- this isn't gameLoad object it's SignalR object. how do I access gameLoad object properties/methods?
play.update();
},
create: function() {
var self = this;
console.log(this.network);
// switch to play state passing network along so it can bind to some of it's function
$.connection.hub.start().done(function() {
console.log("Started!")
console.log("Calling server function.");
// make our first network call
self.network.server.hello();
});
}
};
ええ、私は、オブジェクト名自体を経由して、それが動作します。この場合には、それをアクセスすることができましたけど、私が作成したクラスと新しいを使用した場合にどのようなオブジェクト?私はこれを試してみます、そして、私がこれを書いたことが答えです。 – user441521
その編集が好奇心を満たしてくれることを願っています! – AndyJ
新しいES6はJavascriptで "クラス"を与えるようです(Typescriptを使う必要はありません)。そこでは、私はvar self =このアイデアを関数の外で行うことができるようには見えません。私はコンストラクタ内でthis.self = thisを実行できますが、singalRコールバックの内部でこれがもうそのクラスを参照していない場合には役に立ちません。 – user441521