我的代码中遇到了一些问题。这是:
// We are in the constructor of my class
this.socket.emit('getmap', {name: name}, function(data){
this.mapData = data.map;
this.load();
});
问题是未设置mapData
属性,实际上this
指的是命名空间Socket。 如何通过此功能访问this.mapData
?
抱歉我的英语不好......
答案 0 :(得分:10)
您需要保存对this
对象的引用。回调this
内部将引用调用该函数的对象。一个常见的模式是:
// We are in the constructor of my class
var self = this;
this.socket.emit('getmap', {name: name}, function(data){
self.mapData = data.map;
self.load();
});
答案 1 :(得分:3)
您必须了解JavaScript如何确定this
的值。在您正在使用的匿名函数中,它通常是Web上的全局命名空间或window
对象。无论如何,我建议你利用闭包并在构造函数中使用变量。
// We are in the constructor of my class
var _this = this;
this.socket.emit('getmap', {name: name}, function(data){
_this.mapData = data.map;
_this.load();
});