【发布时间】:2013-12-14 19:53:39
【问题描述】:
重要:代码有效,所以这更像是“这是正确的方法吗?”问题。
我试图在函数中向我的对象属性添加不同的值,然后将其推送到数组中。 对象属性应保持不变,但名称应更改。
输出:
Object {
clientId="cXbHV32Sz0gh-10Mo6DX",
userName="Foo"
},
Object {
clientId="J3ZkTsK6ixTM6pUBo6DY",
userName="bar"
我只能通过这个解决方案来实现它:
var clientObj = function (clientId, userName){
var that = this;
this.clientId = clientId;
this.user
}
function myFunc(socket.id, userName){
var clientInfo = new clientObj(socket.id, userName)
clientList.push(clientInfo)
}
我想知道我是否真的需要在这里有一个构造函数,它只会保存我的属性。
那我如何在不使用构造函数的情况下实现这一点呢?
我想过这样的事情(但这只会替换值):
var ClientObj = {}
function myFunc(socketId, userName){
ClientObj['socketID'] = socketID
ClientObj['userName'] = userName
clientList.push(clientObj)
}
对不起,如果这可能有点混乱
【问题讨论】:
-
为什么你认为这是一个好方法?你的方法的哪一部分让你感到不安?
-
我不知道这是不是一个好方法。我想知道是否真的有必要每次都创建一个新对象,也许也可以在 for 循环或类似的东西中做到这一点?
-
这取决于您对这些对象所做的其他操作。如果
ClientObj实例没有方法,则不需要构造函数。 -
不,它没有任何方法,它只是我的值的容器,这就是为什么我想知道我是否应该在这里使用构造函数
-
看起来 clientList 会有几个 ClientInfo 实例,所以你可以坚持使用构造函数。这是验证其存储的数据的好地方。如果您在 myFunc 之外定义 ClientInfo 并对其进行更改,则 clientList 中的所有实例都将更改,您希望每次调用 myFunc 时 ClientInfo 都是唯一的,然后在 myFunc 中将 ClientInfo 声明为对象文字。
标签: javascript oop object