为什么我的javascript对象的值未定义?

时间:2013-06-26 02:33:53

标签: javascript json object

当我尝试通过chrome控制台输出对象值时,我一直未定义。代码:

ws.on('message', function(message) {
     var JSONobj = {"cmd":"updatesb","name":"TestName"};
     console.log('JSON Name Value: %s', message.name); //<--does not work
     console.log('JSON Name Value: %s', JSONobj.name); //<----WORKS!!!!
});

ws.on中的消息参数通过websocket通信传递{“cmd”:“updatesb”,“name”:“TestName”}。第一个控制台输出未定义。第二个输出是TestName。为什么message.name在应该具有TestName值时是未定义的,如何从message.name获取值?

2 个答案:

答案 0 :(得分:5)

听起来你的message参数是一个字符串,而不是一个对象。

您可以通过调用JSON.parse()将该字符串解析为JSON。

答案 1 :(得分:0)

尝试:

 message.name = 'xxx';
 console.log('JSON Name Value: %s', message.name);

查看message.name是否成功。正如其他人指出的那样,message很可能不是你的想法。

同时尝试console.log(message);并检查输出。

此外,on处理程序可能只接收消息,因此处理程序实际上应该看起来像function(something_else, message),但很难知道ws是什么。