WEB开发网
开发学院网页设计JavaScript JavaScript的Prototype实现 阅读

JavaScript的Prototype实现

 2010-09-14 13:18:27 来源:WEB开发网   
核心提示: 深复制的实现在完成上述工作之后,只是实现了浅复制,JavaScript的Prototype实现(2),对象方面依然是指向对象的引用,这个时候可以通过调用指向对象的Clone方法得到cloned对象的属性对象(因为不知道如何说了),不需要进行clonebreak; case "ob

深复制的实现

在完成上述工作之后,只是实现了浅复制,对象方面依然是指向对象的引用,这个时候可以通过调用指向对象的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 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接