Object # has no method 'foo' 这个错误时什么意思?

昵称90天可以改一次 2013-07-17 11:21:18
调用方
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'


...全文
291 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢, 我明白了. .javascript的this是和其他OOB语言不太一样
潮起潮落 2013-07-17
  • 打赏
  • 举报
回复
你看一下两个地方的this是否一样

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧