0

誰かが私を助けてくれるのだろうか。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;
})();
4

1 に答える 1