读书人

Object #lt;Socketgt; has no method amp;#x2

发布时间: 2013-07-23 09:43:37 作者: rapoo

Object #<Socket> has no method 'foo' 这个错误时什么意思?
本帖最后由 whbzealot 于 2013-07-17 11:23:37 编辑 调用方

var Net = require('net')
//var ProtoBuf = require("protobufjs");

var ServerSock = require('./SvrSocket');

var server = Net.createServer( onConnected );

server.listen(20660, function() {
console.log(' server running...');

});

function onConnected( socket ){

console.log('connected..');

var serverSocket = ServerSock.createSvrSocket(null);

serverSocket.setSocket( socket );

}


然后SvrSocket是这个对象
module.exports = 
{
createSvrSocket : function( socket)
{
return new SvrSocket(socket);
},
}


function SvrSocket( socket )
{
this.m_Socket = socket;


}

SvrSocket.prototype.onData = function( buffer )
{
//this.foo();
}

SvrSocket.prototype.setSocket = function( socket ) {
this.m_Socket = socket;

this.m_Socket.on('data', this.onData );

this.foo();
}

SvrSocket.prototype.foo = function() {

}


这么做的话 就没有错误

但是如果我改成这样

module.exports =
{
createSvrSocket : function( socket)
{
return new SvrSocket(socket);
},
}


function SvrSocket( socket )
{
this.m_Socket = socket;


}

SvrSocket.prototype.onData = function( buffer )
{
this.foo();
}

SvrSocket.prototype.setSocket = function( socket ) {
this.m_Socket = socket;

this.m_Socket.on('data', this.onData );

//this.foo();
}

SvrSocket.prototype.foo = function() {

}


当socket收到消息的时候就会提示这个错
this.foo();
^
TypeError: Object #<Socket> has no method 'foo'


[解决办法]
你看一下两个地方的this是否一样

读书人网 >JavaScript

热点推荐