日期:2014-05-16  浏览次数:20305 次

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'