我想知道是否有人可以帮助我。来自 Java、C++ 背景,我正在尝试用 Javascript 编写一个简洁的 OO 实现。我在 Socket.io 中使用以下模式。
在监听函数中,实例变量在第一个警报上正确定义。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;
})();