【发布时间】:2015-03-02 13:45:59
【问题描述】:
我有一个这样的简单 JavaScript 类:
function MySIOClass(io) { this.io = io this.ns = this.io.of('/notif') this.init() } MySIOClass.prototype.init = function (){ this.ns.on('connection', this.newClient) } MySIOClass.prototype.newClient = function (socket) { socket.on('msg', function (data){ this.handle_msg(data)})}
MySIOClass.prototype.handle_msg = function (data) { // handle my message }
我卡在函数 newClient 上,每次 socket.io 客户端发送事件“msg”时,控制台都会触发
TypeError: Object #
<Socket>has no method 'handle_msg'
我试图在函数 newClient 中保留对运算符 this 的引用:
MySIOClass.prototype.newClient = function (socket) { var c = this; socket.on('msg', function (data){ c.handle_msg(data)})}
但也没有运气,我收到以下关于命名空间的错误:
TypeError: Object #
<Namespace>has no method 'handle_msg'
我的类是通过模块导出的,除了我尝试在类中使用 socket.io 的 on 方法添加侦听器时,一切正常。我在实例化我的类时正确使用了“new”运算符。
你能帮我弄清楚发生了什么吗?我尝试了几件事,但都没有奏效。
感谢您的宝贵时间。
【问题讨论】:
标签: javascript node.js class socket.io typeerror