无法从函数作用域向外部对象添加属性

Cannot add property to an outer object from function scope?

本文关键字:外部 对象 添加 属性 作用域 函数      更新时间:2023-09-26

我有一个函数,它在io.on()函数中提供了一个套接字对象。然而,当我试图给一个新的属性,它的对象内套接字。在功能上,我无法使用套接字外的属性。在函数。控制台显示了这个-

roomName
#undefined

我想知道如何在对象之外使用属性。

io.on("connection", function(socket) {
	socket.on("join_group", function(user, roomnum) {
		socket.userName = user;
		socket.selfRoom = roomnum;
		socket.join(roomnum);
		console.log(socket.selfRoom);
	});
    socket.on("msg", function() {
	console.log("#" + socket.selfRoom);
    });
});

我想知道如何在对象之外使用属性。

on事件回调函数中将属性设置为外部对象socket

但是当on事件处理程序被调用时,外部console.log("#" + socket.selfRoom);语句已经被执行。

请注意

  • 定义事件处理程序socket.on("join_group", function(user, roomnum) { 与被调用的事件处理程序(回调方法)不相同

  • JavaScript是单线程的,并且工作在事件循环模型上,所以当事件被触发时,这个事件处理程序已经进入了事件循环队列,该队列将在当前任务+队列中已经存在的任务之后执行。