gpt4 book ai didi

javascript - 令人困惑的 JavaScript 对象行为

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:55 24 4
gpt4 key购买 nike

我将 Socket.IO 与 Node.js 结合使用。

我有一个对象socket,如下所示:

SocketNamespace
$events: Object
...
socket: Socket

那么如果我查看Socket(即socket.socket)

Socket
$events: Object
...
sessionid: "1549988601982716407"

再次,工作正常。

但是如果我只想返回sessionid,那么我使用socket.socket.sessionid我得到...

undefined

如果我对 socket.socket 执行 typeof,我会得到 object,但是对于 socket.socket.sessionid >,我只是得到未定义

<小时/>

编辑:这是我的代码:

浏览器:

$(function() {

$.getScript('http://localhost:8080/socket.io/socket.io.js', function() {
var socket = io.connect('http://localhost:8080');
console.log(socket.socket.sessionid);
});

});

应用程序:

var io = require('socket.io').listen(8080);

io.sockets.on('connection', function (socket) {

});
<小时/>

编辑 2:更多数据:

我用这个代替了一个日志;

console.log(typeof(socket));
console.log(typeof(socket.socket));
console.log(typeof(socket.socket.sessionid));

返回:

object
object
undefined

预期:

object
object
string
<小时/>

编辑3:*屏幕截图

Screenshot of console

<小时/>

编辑4

奇怪的是,这个方法有效。

var x;
for (x in socket.socket)
{
if (x == 'sessionid') {
console.log(socket.socket[x]);
}
}

最佳答案

socket.socket.sessionid 确实有效,并且在设置后包含 session ID。问题是它在您将其打印到控制台时尚未设置,因为套接字尚未建立连接(因此没有会​​话 ID)。

更改行

var socket = io.connect('http://localhost:8080');
console.log(socket.socket.sessionid);

var socket = io.connect('http://localhost:8080');
socket.on('connect', function () {
console.log(socket.socket.sessionid);
});

一切都应该是金色的。

关于javascript - 令人困惑的 JavaScript 对象行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com