开发者社区> 问答> 正文

在jquery中将一个object赋值给一个新的变量,操作新的变量,为何这个object也会被改变?

       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单操作userDataHasMesonlineUsers里也会变。。。)无语了

展开
收起
小旋风柴进 2016-05-31 12:55:17 3327 0
1 条回答
写回答
取消 提交回答
  • 对象的赋值实际上是把两个变量指向同一个地址,如果想要赋一个拷贝的对象,可以使用以下函数

    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;
    2019-07-17 19:21:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载