`
北极的。鱼
  • 浏览: 158919 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】JS深拷贝

 
阅读更多
作者:青笠
链接:http://www.zhihu.com/question/23031215/answer/31944721
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

google一下JS深拷贝,知乎这个问题竟然排在第四
=============================================================
var cloneObj = function(obj){
    var str, newobj = obj.constructor === Array ? [] : {};
    if(typeof obj !== 'object'){
        return;
    } else if(window.JSON){
        str = JSON.stringify(obj), //系列化对象
        newobj = JSON.parse(str); //还原
    } else {
        for(var i in obj){
            newobj[i] = typeof obj[i] === 'object' ? 
            cloneObj(obj[i]) : obj[i]; 
        }
    }
    return newobj;
};

这个函数可以深拷贝 对象和数组
分享到:
评论

相关推荐

    深拷贝.js(考虑最全的深拷贝函数)

    js考虑最完善的深拷贝函数,可以深拷贝引用对象和基本对象

    js数组的深拷贝

    在JavaScript中,数组的深拷贝是一个常见的需求,它涉及到数据结构的复制,尤其是在处理复杂对象和嵌套数据时。深拷贝与浅拷贝不同,浅拷贝只是复制引用,而深拷贝会创建一个新的对象,包含原始数组的所有元素,并...

    最专业的深拷贝JS库

    "最专业的深拷贝JS库"是一个专门用于实现JavaScript对象深拷贝的工具库。这个库采用了递归的方式来处理深拷贝,递归是一种自上而下解决问题的方法,当遇到复杂的数据结构,如嵌套的对象或数组时,递归可以有效地一...

    javascript深拷贝

    javascript深拷贝demo,有封装好的深拷贝函数和调用的demo

    js深拷贝与浅拷贝详解以及例子.pdf

    JS 深拷贝与浅拷贝详解以及例子 深拷贝与浅拷贝是 JavaScript 开发中常见的概念,分别对应着不同的拷贝方式。在本文中,我们将详细介绍浅拷贝和深拷贝的概念、特点、实现方法和实例。 一、浅拷贝 浅拷贝只拷贝一...

    JavaScript深拷贝和浅拷贝概念与用法实例分析

    本文实例讲述了JavaScript深拷贝和浅拷贝概念与用法。分享给大家供大家参考,具体如下: js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础...

    多维数组和对象-深去重和深拷贝.js

    对多维数组,对象,进行去重,相同的值只保留一个,常见的new Set()和filter,只能去重一维数组,并不能进行深层的去重,逻辑:判断是否为对象,为对象判断是否为数组或是真的对象,递归一直筛选为值,判断首次...

    浅拷贝深拷贝之jQuery中的$.extend分析

    这篇博客“浅拷贝深拷贝之jQuery中的$.extend分析”深入探讨了`$.extend`在浅拷贝和深拷贝场景下的工作原理,这对于理解JavaScript对象的复制机制至关重要。 浅拷贝是指创建一个新对象,然后将源对象的引用属性复制...

    深入理解JavaScript中的深拷贝与浅拷贝:实现方法与应用场景

    本文将详细探讨JavaScript中的深拷贝和浅拷贝,包括它们的定义、实现方法以及在不同场景下的应用。 深拷贝和浅拷贝是JavaScript中处理对象和数组复制的两种基本方法。选择使用哪一种取决于具体的需求和场景。浅拷贝...

    深入剖析javascript中的深拷贝和浅拷贝1

    JavaScript中的深拷贝和浅拷贝是编程面试中常见的概念,尤其在处理对象和数组时至关重要。它们主要涉及的是变量赋值时数据的复制方式。简单来说,浅拷贝是创建了一个新对象,但它的属性仍然是对原对象属性的引用,而...

    javascript深拷贝、浅拷贝和循环引用深入理解

    JavaScript中的深拷贝和浅拷贝是编程中常见的概念,主要涉及到对象和数组的复制。在JavaScript中,数据类型分为基本数据类型(如Number、String、Boolean等)和引用数据类型(如Object、Array等)。基本类型直接存储...

    Jingce-lu#lunotes#JS深拷贝1

    手写一个JS深拷贝手写一个JS深拷贝乞丐版面试够用版乞丐版var newObj = JSON.parse( JSON.stringify( someObj )

    【JavaScript源代码】详解JS变量存储深拷贝和浅拷贝.docx

    2. 手写深拷贝函数:可以通过递归遍历对象的每个属性,如果属性是对象,则继续调用深拷贝函数,从而实现深拷贝。这种方法可以处理更复杂的对象结构,但效率较低。 3. 使用第三方库如lodash的`_.cloneDeep()`:这类库...

    js 深拷贝函数

    在给定的代码中,`objectClone`函数就是一个实现JavaScript深拷贝功能的函数。 首先,我们来分析这个`objectClone`函数的逻辑: 1. 函数接受两个参数:`obj`是要被拷贝的对象,`preventName`是一个可选参数,用于...

    tools_深拷贝_

    `deepAssign.js` 文件很可能是实现这个深拷贝工具的源代码。在JavaScript中,有多种方法可以实现深拷贝,包括使用JSON.parse与JSON.stringify的组合、递归函数以及一些现成的库,如lodash的_.cloneDeep方法。不过,...

    javascript深拷贝的原理与实现方法分析

    JavaScript中的深拷贝是创建一个全新的对象,这个新对象与其原始对象具有相同的属性和值,但它们在内存中是独立的,互不影响。这与浅拷贝不同,浅拷贝只复制对象的引用,而不是创建完全独立的副本。在JavaScript中,...

    JS浅拷贝和深拷贝原理与实现方法分析

    JavaScript中的浅拷贝和深拷贝是两种不同的对象复制方式,它们在处理复杂对象时有着显著的区别。在JavaScript中,对象是引用类型,因此当一个对象被复制时,如果不进行特殊处理,复制的只是指向原对象的引用,而非...

    【JavaScript源代码】JavaScript深拷贝的一些踩坑记录.docx

    JavaScript中的深拷贝是开发过程中常见且重要的概念,主要用于创建一个与原对象具有相同属性和值的新对象,但不会因改变原始对象而影响复制对象。然而,深拷贝并不总是那么简单,尤其在处理特殊类型的对象时,可能会...

    js浅拷贝与深拷贝的区别和实现方式.md

    js浅拷贝与深拷贝的区别和实现方式.md

Global site tag (gtag.js) - Google Analytics