大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> Script -> Javascript浅拷贝与深拷贝实现

Javascript浅拷贝与深拷贝实现

时间: 2021-07-31 作者:daque

javascript中的对像赋值与java中是一律的,都为援用传播.即是说,在把一个对像赋值给一个变量时,那么这个变量所指向的仍即是从来对像的地方.那如何来做呢 谜底是克隆.      什么是"clone"?     在本质编制程序进程中,咱们往往要遇到这种情景:有一个东西a,在某一功夫a中仍旧包括了少许灵验值,此时大概会须要一个和a实足沟通新东西b,而且尔后对b任何变换都不会感化到a中的值,也即是说,a与b是两个独力的东西,但b的初始值是由a东西决定的。在java/javasript谈话中,用大略的赋值语句是不许满意这种需要的。要满意这种需要固然有很多道路,但实行clone()本领是个中最大略,也是最高效的本领,固然了 javascript谈话中并没有此本领.     以是我刻意写了两个克隆本领:一个为浅复制 ,一个为深复制.证明:      浅复制(影子克隆):只复制东西的基础典型,东西典型,仍属于从来的援用.     深复制(深度克隆):不紧复制东西的基础类,同声也复制原东西中的东西.即是说实足是新东西爆发的.底下是尝试代码:运转代码框<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html><head><title> new document </title><meta http-equiv="content-type" content="text/html; charset=utf8"><meta name="generator" content="wawa editor 1.0"><meta name="author" content="八神奄"><meta name="keywords" content="javascript,java,xml,xslt,asp,vbscript,asp .net,c#,c++,database"><meta name="description" content="不迭格的步调员,无所不在"></head><body><script language="javascript"><!--function object.prototype.clone(){var newobj = new object();for(elements in this){newobj[elements] = this[elements];}return newobj;}function object.prototype.cloneall(){function cloneprototype(){}cloneprototype.prototype = this;var obj = new cloneprototype();for(var ele in obj){if(typeof(obj[ele])=="object") obj[ele] = obj[ele].cloneall();}return obj;}var obj1= new object();obj1.team= "first";obj1.powers= new array("iori","kyo");obj1.msg= function(){alert()};obj1.winner= new object();obj1.winner.name= obj1.powers[0];obj1.winner.age= 23;obj1.winner.from= "japan"var obj1_clone= obj1.cloneall();obj1_clone.team= "second";obj1_clone.powers= new array("jimmy","anndy");obj1_clone.winner.name= obj1_clone.powers[1];obj1_clone.winner.age= 22;obj1_clone.winner.from= "usa";msg = "2003界拳皇单打独斗杯,拳皇挑拨赛: \n\n a组 对战情势:\n\n"msg += obj1.team+" 组 ,职员名单:"+obj1.powers+"\n";msg += "第一轮事后,成功者为:"+obj1.winner.name +" ,参加比赛者年纪:"+obj1.winner.age+" ,来自内陆国: "+obj1.winner.from+"\n";msg += "\n\n b组 对战情势:\n\n"msg += obj1_clone.team+" 组 ,职员名单:"+obj1_clone.powers+"\n";msg += "第一轮事后,成功者为:"+obj1_clone.winner.name +" ,参加比赛者年纪:"+obj1_clone.winner.age+" ,来自国际捕快队伍: "+obj1_clone.winner.from+"\n";alert(msg);//--></script></body></html> [ctrl+a 十足采用 提醒:你可先窜改局部代码,再按运转](根源:蓝色理念)

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.