首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript对象引用

JavaScript对象引用
EN

Stack Overflow用户
提问于 2015-02-06 09:06:04
回答 2查看 98关注 0票数 4

因此,我对JavaScript非常陌生,虽然我知道在Java中使用这样的小技巧,但同样的技巧在这里并不适用,或者至少我不知道如何使用它们,所以我目前正在以集合的形式使用两个对象:

代码语言:javascript
复制
var ConnectedClients_socket = {};
var ConnectedClients_networkId = {};

持有键/值对可将networkID链接到客户端,然后是使用套接字作为键的复制对象。任何优化都会很棒,我将在整个应用程序中通过套接字和ID获取大量的客户端。

继续讨论问题:

断开连接时,我需要从ConnectedClients_networkId对象中删除客户端实例。根据我的理解,这是使用delete关键字完成的。

下面是我目前试图用于此的代码:

代码语言:javascript
复制
console.log('socket disconnected');
delete Client.ConnectedClients_networkId[Client.ConnectedClients_socket[socket].getNetworkId()];
delete Client.ConnectedClients_socket.socket;

但是,这给了我以下错误:

代码语言:javascript
复制
TypeError: Cannot call method 'getNetworkId' of undefined

这表明

代码语言:javascript
复制
Client.ConnectedClients_socket[socket]

正在返回未定义的内容,而Client.ConnectedClients_socket.socket将在稍后成功删除一行。我在JavaScript中查找了几个关于从键中获取值的不同页面,我不知道自己做错了什么。

以下是客户端的构造函数:

代码语言:javascript
复制
var Client = function(networkId, socket, ...) {
    this.networkId = networkId;
    this.socket = socket;
    ...
    ConnectedClients_socket.socket = this;
    ConnectedClients_networkId.networkId = this;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-06 09:09:43

你需要在那里使用点符号。

代码语言:javascript
复制
    delete Client.ConnectedClients_networkId[Client.ConnectedClients_socket.socket.getNetworkId()];

括号符号将将其解析为JavaScript,因此它对于动态获取属性非常有用。

票数 1
EN

Stack Overflow用户

发布于 2015-02-06 09:09:35

引号?

代码语言:javascript
复制
Client.ConnectedClients_socket['socket']

但是,这里没有必要使用这种符号。

代码语言:javascript
复制
Client.ConnectedClients_socket.socket

都没问题。

括号表示法可用于访问具有特殊字符或可变值的成员。

代码语言:javascript
复制
Client.ConnectedClients_socket['someArr[]']

代码语言:javascript
复制
var x = 'socket';
Client.ConnectedClients_socket[x]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28362085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档