onlineUsers[userData.userID] = userData;
console.log(onlineUsers);
var userDataHasMes = userData;
userDataHasMes['message'] = new Array();
userContentList[userData.userID] = userDataHasMes;
//在线人数+1
onlineCount++;
console.log(onlineUsers);
userData是一个Object类型的变量,为何我将其赋值给userDataHasMes
,对userDataHasMes
进行改动,最后userData也会有变动啊??(onlineUsers
里只存了useData单操作userDataHasMes
时onlineUsers
里也会变。。。)无语了
对象的赋值实际上是把两个变量指向同一个地址,如果想要赋一个拷贝的对象,可以使用以下函数
function clone(obj)
{
var o,i,j,k;
if(typeof(obj)!="object" || obj===null)return obj;
if(obj instanceof(Array))
{
o=[];
i=0;j=obj.length;
for(;i<j;i++)
{
if(typeof(obj[i])=="object" && obj[i]!=null)
{
o[i]=arguments.callee(obj[i]);
}
else
{
o[i]=obj[i];
}
}
}
else
{
o={};
for(i in obj)
{
if(typeof(obj[i])=="object" && obj[i]!=null)
{
o[i]=arguments.callee(obj[i]);
}
else
{
o[i]=obj[i];
}
}
}
return o;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。