JavaScript的Prototype实现
2010-09-14 13:18:27 来源:WEB开发网深复制的实现
在完成上述工作之后,只是实现了浅复制,对象方面依然是指向对象的引用,这个时候可以通过调用指向对象的Clone方法得到cloned对象的属性对象(因为不知道如何说了)。objClone[v]=objClone[v].Clone(); 这句代码就是完成如此的功能。
Clone方法的实现
//////////////////////////////////////////////////////////////////////
//为Object添加Clone的方法,因为所有的对象的顶级对象都是Object
//因此所有用户自定义对象都实现了Clone的方法
//////////////////////////////////////////////////////////////////////
Object.prototype.Clone=function(){
function CloneModel(){
}
CloneModel.prototype=this;
var objClone=new CloneModel();
var strMsg="";
for( v in objClone){
switch (typeof objClone[v]){
case "function":
//如果是方法,不需要进行clone
break;
case "object":
///////////////////////////////////////////////////////////////////////
//如果是对象,采用Clone重新得到,这样做的目的在于能够进行深度Clone
//因为javascript是一个Object Based的语言,不然内部对象是指向原来的引用
///////////////////////////////////////////////////////////////////////
objClone[v]=objClone[v].Clone();
break;
default:
///////////////////////////////////////////////////////////////////////
//其余数据类型情况下全部重新赋值
//这样做的目的就是保证数值在内存中的存放是在新对象的空间中
//而不仅仅指向Parent Object的一个refrence
///////////////////////////////////////////////////////////////////////
objClone[v]=objClone[v];
}
}
return objClone;
}
Tags:JavaScript Prototype 实现
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接