JavaScript对象深复制

1、原理

使用JSON,当然需要JSON安全的格式,JSON安全请参考:http://www.cnblogs.com/mengfangui/p/8257269.html

2、示例

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>使用JSON实现对象深复制</title>
    </head>

    <body>

        <script type="text/javascript">
            var a = {
                "k1": 1,
                "k2": [2, 3],
                "k3": {
                    "k3_1": 4
                }
            };
            var b = JSON.parse(JSON.stringify(a));
            console.log(b)
        </script>
    </body>

</html>

原文地址:https://www.cnblogs.com/mengfangui/p/8341341.html

时间: 2024-10-08 05:48:01

JavaScript对象深复制的相关文章

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

js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 var a=[1,2,3], b=a; b[0]=0; a[0] 此时显示的结果为0,也就是说a和b指向的是同一个数组,只是名字不一样罢了. 单层深复制: 1.js的slice函数: 返回一个新的数组,包含下标从 start 到 end (不包括该元素,此参数可选)的元素. 控制台输入: var a

实现JS对象深复制的简单方案

前段时间开jQuery源代码的时候,正好看到jQuery.extend的实现方案,忽然想到对象的深复制和浅表复制的问题. 因为引用类型对象的存在,所以简单的使用"="只能实现引用关系的复制,所以当其中一个引用指向的变量发生变化的时候,相应的另外一个引用也会发生变化. 所以很多时候也称这种复制为浅表复制.那么如何才能实现对象的深复制呢?以下是实现深复制的简单实现代码,仅供参考. 1 function copyObject(target){ 2 return _copy(target);

Java对象深复制、浅复制

我们在编码过程经常会碰到将一个对象传递给另一个对象,java中对于基本型变量采用的是值传递,而对于对象比如bean传递时采用的引用传递也就是地址传递,而很多时候对于对象传递我们也希望能够象值传递一样,使得传递之前和之后有不同的内存地址,在这种情况下我们一般采用以下两种情况. 浅复制与深复制概念 浅复制(浅克隆) :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. 深复制(深克隆) :被复制对象

JavaScript中对象深复制

参考: http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/

深入理解javaScript的深复制和浅复制

javascript有五种基本数据类型(也就是简单数据类型),它们分别是:Undefined,Null,Boolean,Number和String.还含有一种复杂数据类型,就是对象 注意Undefined和Null的区别,Undefined类型只有一个值,就是undefined,Null类型也只有一个值,也就是nullUndefined其实就是已声明未赋值的变量输出的结果null其实就是一个不存在的对象的结果 var c; console.log(c)//undefined console.lo

JavaScript对象浅复制

1.概述 Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). 注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性. 2.示例 const target = { a: 1, b: 1 }; const source1 = { b: 2, c: 2 }; const source2 = { c: 3 }; Object.assign(target, source1, source2); ta

javascript 对象的复制

1. jQuery has a method that can be used to deep-clone objects, the$.extend() function. Let’s take a look at how it can be used: var bob = { name: "Bob", age: 32 }; var bill = $.extend(true, {}, bob); bill.name = "Bill"; console.log(bob

C# 对象深复制

Mark: //实现IClonable接口并重写Clone方法就可以实现深克隆了 #region ICloneable 成员 public object Clone() { MemoryStream ms = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, this); ms.Seek(0, 0); object value = bf.Deserialize(ms); ms.Clos

Javascript 浅复制与深复制

在理解JS的深浅复制之前,我觉得有必要先提及一下关于值传递与引用传递. 在JS中,基本类型值的复制是按值传递的,而引用类型值的复制则是按引用传递的.值传递复制的对象间不会有任何牵连,互相独立:但是引用传递复制的对象间则会相互影响,修改其中任何一方的值都会在另一方中体现.之所以会有这样的表现和JS的内存机制有关. JS的内存也分为堆和栈,注意这里的堆栈和数据结构的堆栈是不同的概念. 栈:由系统自动分配,自动回收,效率高,但容量小 堆:由程序员手动分配内存,并且手动销毁(高级语言如JS中有垃圾自动回