js对象复制

转载 2012年03月29日 13:34:27


转至:http://apps.hi.baidu.com/share/detail/518475

在js里没有类似JAVA的clone方法,无法实现对对象的克隆,一般使用等号操作符来传递对象,但这样就造成了指针关联问题,修改任何一个对象,其关 联的对象也会被改变,但很多时候我们只想得到一个对象的拷贝,而非引用。今日偶就遇到了这个问题,以前还真没有注意过这个,朋友给找了两个方法,感觉写的 都不错。只是实现稍有不同,但大体原理是相对的,即逐项复制对象内容

相信这段代码对很多web开发的朋友都会有用。

方法一:定义一个clone方法来实现。

function clone(myObj){
  if(typeof(myObj) != 'object') return myObj;
  if(myObj == null) return myObj;
  
  var myNewObj = new Object();
  
  for(var i in myObj)
     myNewObj[i] = clone(myObj[i]);
  
  return myNewObj;
}

方法二:通过object原型扩展实现
Object.prototype.Clone = function()
{
    var objClone;
    if ( this.constructor == Object ) objClone = new this.constructor();
    else objClone = new this.constructor(this.valueOf());
    for ( var key in this )
     {
        if ( objClone[key] != this[key] )
         {
            if ( typeof(this[key]) == 'object' )
             {
                 objClone[key] = this[key].Clone();
             }
            else
             {
                 objClone[key] = this[key];
             }
         }
     }
     objClone.toString = this.toString;
     objClone.valueOf = this.valueOf;
    return objClone;
} 


相关文章推荐

js对象的复制

最近用到一个web ui插件,不过他的调用时全局变量, 也就是说一个页面只能用一次,这个插件挺好用的只是我的页面需要2个以上 这样的插件,所以我想到了js对象的克隆。 思路:克隆一个对象(不是引...

JS学习30:对象简单、深度克隆(复制、Clone)

转自:http://qianduanblog.com/post/js-learning-30-object-clone-copy.html javascript的一切实例都是对象,只是对象之...

JS对象复制

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

JS 对象复制Object.assign和Object.create

Object.create简介 创建一个拥有指定原型和若干指定属性的对象。多用于对象继承。 语法 Object.create(prototype,[proptertiesObject])参数 ...

js 对象的深复制和浅复制

浅复制:只赋值一层对象,并不递归赋值对象内嵌套的对象 深复制:递归赋值对象中的所有值和对象...

js 对象深复制,创建对象和继承

转载地址:http://www.cnblogs.com/codetker/p/4672135.html  js 对象深复制,创建对象和继承。主要参考高级编程第三版,总结网上部分资料和自己的代码测...
  • wjy397
  • wjy397
  • 2015年07月30日 10:47
  • 368

js object对象赋值bug和对象复制clone方法

最近在写程序的时候发现,如果新建一个object对象objb,初始化值为obja,如果改变了objb对象的字段值,那么obja也会随之改变,看来对象赋值传递的是一个引用。 代码重现:   ...
  • z_qifa
  • z_qifa
  • 2017年07月03日 15:59
  • 106

js 面向对象案例

  • 2017年09月19日 01:18
  • 37KB
  • 下载

js对象分页插件

  • 2014年11月27日 11:25
  • 5KB
  • 下载

JS查看Object对象的内容

转自:http://blog.csdn.net/tfy1332/article/details/46742285 以一个例子来说,下面是他的Object: JS: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js对象复制
举报原因:
原因补充:

(最多只允许输入30个字)