网站导航免费论文 原创论文 论文搜索 作业答案 网学软件 学术大家 资料中心 会员中心 问题解答 定作论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 交易代码 > ASP.Net精品代码 > 正文
javascript对象的深拷贝
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 佚名 来源: 网络 发布时间: 10/11/03
其实我的办法并不是很好,不过好歹是自己琢磨的,,最开始的思路也是来自网上,就是不区分数组和类,统一只拷贝属性,但我在使用中发现如果拷贝对象是数组或者类的某个属性是数组的话,拷贝过去之后的数组全都无法用下标去访问了,于是我就简单的跟踪了下,发现简单的for each是不能拷贝Object本身的属性的,就是说,你new一个Object,然后给这个Object添加属性,然后用for each的方式去访问这个对象的属性的话,只能访问到后来添加的属性,而数组显然和Object不一样,所以仅仅只拷贝Object的方法就不能适应Array了,于是有了下面的代码:
function Clone(original)
{
    
if(typeof(original) == "object"
    
{
        
if (original.length != undefined)
        
{
            
return CloneArray(original);
        }

        
        
return CloneObject(original);
    }

    
    
return original;
}


function CloneObject(original)
{
    var newObj 
= new Object();
    
    
for(var ele in original)
    
{
        
if(typeof(original[ele]) == "object"
        
{
            
if (original[ele].length != undefined)
            
{
                 newObj[ele] 
= CloneArray(original[ele]);
            }

            
else
            
{
                newObj[ele] 
= CloneObject(original[ele]);
            }

        }

        
else
        
{
            newObj[ele] 
= original[ele];
        }

    }

    
    
return newObj;
}


function CloneArray(original)
{
    var newArray 
= new Array();
    
    
for (var i = 0; i < original.length; i++)
    
{
        
if(typeof(original[i]) == "object"
        
{
            
if (original[i].length != undefined)
            
{
                newArray[i] 
= CloneArray(original[i]);
            }

            
else
            
{
                newArray[i] 
= CloneObject(original[i]);
            }

        }

        
else
        
{
            newArray[i] 
= original[i];
        }

    }

    
    
return newArray;
}

这里我对怎么判断是不是数组没有找到好的办法。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
湘ICP备09003080号