誰かが私を助けてくれるのだろうか。Java と C++ のバックグラウンドを持っているので、Javascript できちんとした OO 実装を書こうとしています。Socket.io で次のパターンを使用しています。
listen 関数では、最初のアラートでインスタンス変数が適切に定義されます。x インスタンス変数は socket.on イベント リスナーのスコープ外になり、両方のインスタンス変数は JQuery $.each のスコープ外になります。
誰かがここで何が起こっているのか説明できますか?
var Player = (function () {
this.x = "";
//Constructor
var Player = function() {
// connect to the server
this.x = "somevalue";
this.socket = io.connect();
};
Player.prototype = {
constructor: Player,
listen: function() {
alert(this.x + " " + this.socket); // fine get somevalue & [object, object]
this.socket.on('event', function(data) {
alert(this.x + " " + this.socket); // this.x undefined this.socket [object, object]
$.each(data, function(index,value) {
alert(this.x + " " + this.socket); // undefined undefined
});
});
}
return Player;
})();