`
yellow0323
  • 浏览: 1708 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

网摘:js对象复制

阅读更多

在JavaScript很多人复制一个对象的时候都是直接用"=",因为大家都觉得脚本语言是没有指针、引用、地址之类的,所以直接用"="就可以把一个对象复制给另外一个对象,如下代码:
代码1




1.var i1 = 1;  
2.var i2 = i1;  
3.i2 = 2;  
4.alert("i1:"+i1+",i2:"+i2); 
输出结果:i1:1 , i2:2

     但可能没有发现,这种“复制”用在对象(object)类型是“错误”的,因为这只是把对象的地址复制,所以如下代码会进行了一次“错误”的复制:
代码2



1.var o1 = {i : 1,s : "o1"};  
2.var o2 = o1;  
3.o2.i=2;  
4.o2.s="o2";  
5.alert("o1.i:"+o1.i+",o2.i:"+o2.i);  
6.alert("o1.s:"+o1.s+",o2.s:"+o2.s);  
输出:o1.i:2 , o2.i:2
       o1.s:o2 , o2.s:o2

     可能你会问为什么 代码1 可以复制,但 代码2 却没有复制?
    其实真确来说是基本数据类型可以复制,非基本类型(包括字符串)只复制其引用。为什么要这样做呢?原因很简单,为了减少开销。大家都知道非基本类型有时候很大,如果重新开辟内存来存放一个这么大的对象,开销很大,导致运行会很慢。脚本语言是直接在虚拟机(或者浏览器)运行,它经过虚拟机这一层来处理代码,速度已经相对其他编译语言慢很多,所以如果把非基本对象再做“复制”,那么可能你要等上一年半载才能运行得了程序,因此只能复制对象的引用。

    如果需要把整个对象复制,必须一个一个属性或方法引用复制一偏,这样为每个属性开辟内存来存放你需要的数据,当然这样相对来说会很慢,尤其数据量很多的时候,下面是本人写的对象复制函数:
代码3




1.function cloneAll(fromObj,toObj){  
2.   for(var i in fromObj){  
3.      if(typeof fromObj[i] == "object"){  
4.         toObj[i]={};  
5.         cloneAll(fromObj[i],toObj[i]);  
6.         continue;  
7.      }  
8.      toObj[i] = fromObj[i];  
9.   }  
10.} 
把fromObj对象复制到toObj

分享到:
评论

相关推荐

    网摘:关于金锣湾商业中心运行情况的调查报告.doc

    【金锣湾商业中心概述】 金锣湾商业中心位于北京市延庆县的核心区域,由北京宝业恒基投资有限公司自2006年开始建设,并于2009年正式投入运营。该商业中心最初被定位为延庆的一流商贸中心区,旨在促进当地商业发展,...

    百亿网摘完整无错版

    百亿网摘整站 后台功能 --------------------- 基本信息 管理站点的基本信息 栏目管理 栏目分类 网摘管理 已推荐网摘 推荐网摘 首页生成 重新生成页面 审核网摘 管理网摘 模版管理 模版管理 用户管理 管理员修改 ...

    网摘精灵软件包1.5

    网摘自动提交工具 网摘精灵教程:网摘自动提交工具。 尊敬的站长:你好。 我们注意到您的网站放置了很多网摘提交代码。 你希望通过提交网摘来获取流量,对吗? 靠这种原始的手工提交,效率很低,对吗? 如果有...

    天空网摘 v120606

    网摘建站具有技术自主容易、运营维护简单等性价比的优势,并能高效快捷的整合网络诸如论坛、博客、资讯、图片、视频、下载等各类资源来。当然,网摘应用也具有内容原创性不强,互动交流性不够的特点,这就需要在网站...

    网摘集合网摘集合网摘集合网摘集合

    网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合...

    天空网摘 V120606.rar

    目标 利用网摘建站,打造最便捷的资讯服务!最适合于做小型SEO网站。 适用范围 新闻娱乐、专业学术、地方门户、行业资讯等相关网站建设。 参考范例:电子书藏家 初始化 注册用户:天空 密码:admin 登录:Login....

    php网摘程序

    在互联网信息爆炸的时代,网摘程序为用户提供了方便的工具,帮助他们保存感兴趣的内容,便于日后查阅和分享。这种程序通常包含用户登录系统、内容收藏功能、分类管理以及搜索功能等,旨在提升用户的网络浏览体验。 ...

    PHP免费网摘程序

    2、修改数据库配置文件,conn.php.修改网摘配置文件 include/setup.php。 3、后台路径admin/default.php 默认帐号密码 是 admin admin . 4、生成所有网摘静态页面程序为data.php。生成所有新网摘的程序为 datanew....

    天空网摘 v20110624.rar

    程序说明网摘等级:删除 私有 验证 公开 高级 推荐 精华用户等级:删除 锁定 验证 普通 高级 贵宾 操作员 管理员各个等级的用户分别对应拥有各个等级的网摘权限,其中操作员可以添加“图片”类型的网摘,管理员可以...

    加入网摘插件 v1.0 通用版

    JavaScript负责处理用户的交互,如触发下拉菜单的显示和隐藏,以及与服务器的通信,将页面信息提交到网摘站点。而CSS则用于控制插件的样式,使其与网站的现有设计保持一致,提供良好的用户体验。 源代码的提供对于...

    PHP免费网摘程序(源代码)

    2、修改数据库配置文件,conn.php.修改网摘配置文件 include/setup.php。 3、后台路径admin/default.php 默认帐号密码 是 admin admin . 4、生成所有网摘静态页面程序为data.php。生成所有新网摘的程序为 datanew....

    学校教学建设项目网站

    分享您认为最好的内容,请访问CSDN网摘:http://wz.csdn.net/ IT企业觅人才,个人找工作,请访问CSDN人才服务:http://job.csdn.net/ 业界新闻、人才、外包 等等更多CSDN服务,请访问 www.csdn.net

    网摘、收藏插件(非JS调用版)插件 for Discuz!7.0 GBK.rar

    网摘、收藏插件,让你的IP剧增(非JS调用版) 将帖子收录到各大的网摘,收藏的作用和好处,基本上所有人都知道吧?这里就不赘述了。 虽然DZ上有人发过类似的插件了,是JS调用的,但经过本人测试,大部分的代码...

    汽车图标汽车 修改个人档案资料、关注好友动态,请访问CSDN个人空间:http://hi.csdn.net/

    分享您认为最好的内容,请访问CSDN网摘:http://wz.csdn.net/ IT企业觅人才,个人找工作,请访问CSDN人才服务:http://job.csdn.net/ 业界新闻、人才、外包 等等更多CSDN服务,请访问 http://www.csdn.net ...

    如何重装系统的心得修改个人档案资料、关注好友动态,请访问CSDN个人空间:http://hi.csdn.net/my.html

    分享您认为最好的内容,请访问CSDN网摘:http://wz.csdn.net/ IT企业觅人才,个人找工作,请访问CSDN人才服务:http://job.csdn.net/ 业界新闻、人才、外包 等等更多CSDN服务,请访问 www.csdn.net

    刀光插件刀光插件-GhostTrails.v2.1

    3D4D到2009都可装 修改个人档案资料、关注好友动态,请访问CSDN个人空间:... 分享您认为最好的内容,请访问CSDN网摘:http://wz.csdn.net/ 业界新闻、人才、外包 等等更多CSDN服务,请访问 http://www.csdn.net

    咖啡屋网摘联盟程序 v6.0 终极无错误版

    《咖啡屋网摘联盟程序 v6.0 终极无错误版》是一款专为网络爱好者设计的开源软件,集成了用户注册与互动功能,将网摘分享提升到了一个新的层次。这款程序的出现满足了广大用户对更加完善、功能更丰富的网摘平台的需求...

    wjdkfdfefecdfkjgg454

    分享您认为最好的内容,请访问CSDN网摘:http://wz.csdn.net/ IT企业觅人才,个人找工作,请访问CSDN人才服务:http://job.csdn.net/ 业界新闻、人才、外包 等等更多CSDN服务,请访问 http://www.csdn.net

Global site tag (gtag.js) - Google Analytics