javascript

位置:IT落伍者 >> javascript >> 浏览文章

Javascript中浅拷贝与深拷贝的实现


发布日期:2024年04月28日
 
Javascript中浅拷贝与深拷贝的实现

javascript中的对像赋值 与 Java中是一样的 都为引用传递

就是说在把一个对像赋值给一个变量时那么这个变量所指向的仍就是原来对像的地址那怎么来做呢 答案是 克隆

什么是clone

在实际编程过程中我们常常要遇到这种情况有一个对象A在某一时刻A中已经包含了一些有效值此时可能会需要一个和A完全相同新对象B并且此后对B任何改动都不会影响到A中的值也就是说A与B是两个独立的对象但B的初始值是由A对象确定的在Java/javasript语言中用简单的赋值语句是不能满足这种需求的要满足这种需求虽然有很多途径但实现clone()方法是其中最简单也是最高效的手段当然了 javascript语言中并没有此方法

所以我特意写了两个克隆方法:一个为浅复制 一个为深复制

解释:

浅复制(影子克隆):只复制对像的基本类型对像类型仍属于原来的引用

深复制(深度克隆):不紧复制对象的基本类同时也复制原对象中的 对像就是说完全是新对象产生的

下面是代码我己测试过了还没遇到什么问题 希望 大家感兴趣的 一起参与

<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN>

<HTML>

<HEAD>

<TITLE> New Document </TITLE>

<meta httpequiv=ContentType content=text/html; charset=gb>

<META NAME=Generator CONTENT=Wawa Editor >

<META NAME=Author CONTENT=八神奄>

<META NAME=Keywords CONTENT=javascriptJavaXMLXSLTASPVBScriptC#C++Database>

<META NAME=Description CONTENT=不及格的程序员无所不在>

</HEAD>

<BODY>

<SCRIPT LANGUAGE=javascript>

<!

function Objectprototypeclone(){

var newObj = new Object();

for(elements in this){

newObj[elements] = this[elements];

}

return newObj;

}

function ObjectprototypecloneAll(){

function clonePrototype(){}

clonePrototypeprototype = this;

var obj = new clonePrototype();

for(var ele in obj){

if(typeof(obj[ele])==object) obj[ele] = obj[ele]cloneAll();

}

return obj;

}

var obj= new Object();

objTeam= First;

objPowers= new Array(IoriKyo);

objmsg= function(){alert()};

objwinner= new Object();

objwinnername= objPowers[];

objwinnerage= ;

objwinnerfrom= Japan

var obj_clone= objcloneAll();

obj_cloneTeam= Second;

obj_clonePowers= new Array(JimmyAnndy);

obj_clonewinnername= obj_clonePowers[];

obj_clonewinnerage= ;

obj_clonewinnerfrom= USA;

msg = 界拳皇单打独斗杯拳皇挑战赛: \n\n A组 对战形式:\n\n

msg += objTeam+人员名单:+objPowers+\n;

msg += 第一轮过后胜利者为:+objwinnername + 参赛者年龄:+objwinnerage+ 来自岛国: +objwinnerfrom+\n;

msg += \n\n B组 对战形式:\n\n

msg += obj_cloneTeam+人员名单:+obj_clonePowers+\n;

msg += 第一轮过后胜利者为:+obj_clonewinnername + 参赛者年龄:+obj_clonewinnerage+ 来自国际警察部队: +obj_clonewinnerfrom+\n;

alert(msg);

//>

</SCRIPT>

</BODY>

</HTML>

               

上一篇:jQuery .attr()和.removeAttr()方法操作元素属性示例

下一篇:javascript控制的鼠标特效