43.对象深度克隆

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>对象深度克隆</title>
 6 </head>
 7 <body>
 8 </body>
 9
10 <script>
11     //对象深度克隆
12     function cloneObject(o) {
13         if (!o || ‘object‘ !== typeof o) {
14             return o;
15         }
16         var c = ‘function‘ === typeof o.pop ? [] : {};
17         var p, v;
18         for (p in o) {
19             if (o.hasOwnProperty(p)) {
20                 v = o[p];
21                 if (v && ‘object‘ === typeof v) {
22                     c[p] = Ext.ux.clone(v);
23                 }
24                 else {
25                     c[p] = v;
26                 }
27             }
28         }
29         return c;
30     }
31
32
33
34 </script>
35
36 </html>

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title>对象深度克隆</title></head><body></body>

<script>    //对象深度克隆    function cloneObject(o) {        if (!o || ‘object‘ !== typeof o) {            return o;        }        var c = ‘function‘ === typeof o.pop ? [] : {};        var p, v;        for (p in o) {            if (o.hasOwnProperty(p)) {                v = o[p];                if (v && ‘object‘ === typeof v) {                    c[p] = Ext.ux.clone(v);                }                else {                    c[p] = v;                }            }        }        return c;    }

</script>

</html>
时间: 2025-01-10 16:11:52

43.对象深度克隆的相关文章

C#对象深度克隆

有基础的开发者都应该很明白,对象是一个引用类型,例如: object b=new object(); object a=b; 那么a指向的是b的地址,这样在有些时候就会造成如果修改a的值,那么b的值也会跟随着改变(a和b是同一个引用内存地址). 我们想要a和b都是各自互不影响的,那么只能是完全地新建一个新的对象,并且把现有对象的每个属性的值赋给新的对象的属性.也就是值类型的复制,这个操作就叫深度克隆. 这里我们写两个泛型方法分别对对象T和集合List<T>进行深度克隆的实现,我们的方法实现方式

JS对象深度克隆

首先看一个例子: 1 var student = { 2 name:"yxz", 3 age:25 4 } 5 var newStudent = student; 6 newStudent.sex = "male"; 7 console.log(student); //{name:"yxz",age:25,sex:"male"} 由此可见,将一个对象通过简单的传递赋值传递给一个新的变量时,仅仅是给该对象增添了一个别名.所以,对

对象深度克隆

1 function cloneObj(obj) { 2 var o = obj.constructor == Array ? [] : {}; //首先处理变量,看看是数组还是对象啦 3 for (var k in obj) { 4 //我们知道for in 会将原型的东西也给遍历出来,所以我们这里需要做一个判断 5 if (obj.hasOwnProperty(k)) { 6 //递归方式处理 7 o[k] = typeof obj[k] === 'objext' ? cloneObj(ob

JavaScript实现对象的深度克隆【简洁】【分享】

JavaScript实现对象的深度克隆 代码实现如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>clone</title> 6 7 <script type="text/javascript"> 8 //对象深度克隆方法 9 10 11 ////

jquery 对象数组的克隆和深度克隆

var obj1 = $.extend(false, {}, obj2);  //对象克隆 var obj1 = $.extend(true, {}, obj2);   //对象深度克隆 ----------------------------把{} 换成了[]--------------- var obj1 = $.extend(false, [], obj2);    //数组克隆 var obj1 = $.extend(true, [], obj2);    //数组深度克隆 所谓的深度就

JavaScript对象之深度克隆

也不知道从什么时候开始,前端圈冒出了个新词:对象深度克隆.看起来好像很高大上的样子,实际上并不新鲜,在我们的实际项目开发中,你可能早已用到,只不过由于汉字的博大精深,有些原本很简单的事物被一些看似专业的词汇稍加修饰,就变得神秘起来了. 首先为什么要将一个对象进行深克隆?请允许我进行一个猜测:你有时一定会认为js的内置对象document太长,那么你可能会这样做: var d = document; d.by = function(id){ return d.getElementById(id);

java中传值及引伸深度克隆的思考(说白了Java只能传递对象指针)

java中传值及引伸深度克隆的思考 大家都知道java中没有指针.难道java真的没有指针吗?句柄是什么?变量地址在哪里?没有地址的话简直不可想象! java中内存的分配方式有两种,一种是在堆中分配,一种是在堆栈中分配,所有new出来的对象都是在堆中分配的,函数中参数的传递是在栈中分配的.通常情况下堆的内存可以很大,比如32位操作系统中的虚拟内存都可以被堆所使用(当内存紧张的时候甚至硬盘都可以是堆的存储空间),而堆栈的内存分配是有限的. 这和c++中内存分配差不多(c++中还要有另一种方式用于全

javascript中对象的深度克隆

零.寒暄 又是一个月多月没有更新博客了,这段时间回学校处理下论文的事情,实习的生活也暂时告一段落(在公司上班,才发现学校里面的生活简直如天堂一般,相信很多已经毕业的小伙伴肯定被我说中了,说中了请给本文点个赞,哈哈!).希望接下来自己的更新进度能加快,马上又是一年校招时,被虐也好.大牛虐别人也罢,总之祝福各位今年要找工作的小伙伴们好运.那么,今天就聊一下一个常见的笔试.面试题,js中对象的深度克隆.翻了下这个题目,在很多地方出现过,已经算一个老的题目了,但是每年的校招中总会考到,其实想想,这个题目

JAVA对象任意深度克隆clone工具类分享

原文:JAVA对象任意深度克隆clone工具类分享 源代码下载地址:http://www.zuidaima.com/share/1550463408114688.htm package com.zuidaima.n_app.util; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import jav