所以,我有以下代码:
class Server {
dataHandler(d) {
console.log(d);
}
init() {
io.on('connection', function(socket) {
socket.on('data', this.dataHandler(d); //<-- TypeError: this.dataHandler is not a function
});
}
}
我想处理数据套接字的数据,但是如何才能转义匿名函数环境并访问this.dataHandler()?即使我调用dataHandler()或instance.dataHandler()(存储服务器的对象),也找不到该函数。
有人可以向我解释吗?
答案 0 :(得分:0)
发生这种情况是因为错误地使用了this
。
您应该使用箭头函数来保留this
上下文:
class Server {
dataHandler(d) {
console.log(d);
}
init() {
io.on('connection', (socket) => {
socket.on('data', this.dataHandler(d));
});
}
}