1.数组及对象拷贝:

浅拷贝var b=$.extend(false,{},a);//对象浅拷贝

var a={aa:111,bb:{bb1:22}};
var b=$.extend(false,{},a)
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":22}}"
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":22}}"
b.bb.bb1=3300;
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":3300}}"
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":}}"

深拷贝:var b=$.extend(true,{},a);//对象深拷贝

var a={aa:111,bb:{bb1:22}};
var b=$.extend(true,{},a)
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":22}}"
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":22}}"
b.bb.bb1=10000;
10000
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":}}"
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":10000}}"

对象合并:$.extend(a,b);

var a={aa:111,bb:222};
var b={bb:333,cc:444};
var res=$.extend(a,b);
JSON.stringify(a)
"{"aa":111,"bb":333,"cc":444}"
JSON.stringify(b)
"{"bb":333,"cc":444}"
JSON.stringify(res)
"{"aa":111,"bb":333,"cc":444}"

2.元素拷贝
var tr=th.clone();

tr.find("th").children().remove();不影响th

3.实现原理

 $ = { //浅拷贝 
      extend : function(target, options) { 
         for (name in options) { 
             target[name] = options[name]; 
         } 
         return target; 
     } 
  };  
     
 $ = {  //深拷贝
     extend : function(deep, target, options) { 
         for (name in options) { 
             copy = options[name]; 
             if (deep && copy instanceof Array) { 
                 target[name] = $.extend(deep, [], copy); 
             } else if (deep && copy instanceof Object) { 
                 target[name] = $.extend(deep, {}, copy); 
             } else { 
                target[name] = options[name]; 
            } 
        } 
        return target; 
   } 
};

具体分为三种情况:

  a. 属性是数组时,则将target[name]初始化为空数组,然后递归调用extend;

  b. 属性是对象时,则将target[name]初始化为空对象,然后递归调用extend;

  c. 否则,直接复制属性。

js对象及元素复制拷贝的更多相关文章

  1. Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:

    OC内部:可变对象和不可变对象的深(复制)拷贝问题思考:   不可变对象:  例如NSString对象,因为NSString对象是常量字符串,所以,不可以更改其内容,但是可以修改指向该字符串的指针指向 ...

  2. js对象进行浅复制,深拷贝的方法

    js对象浅拷贝和深拷贝详解   本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷 ...

  3. JS对象和数组深浅拷贝总结②

    在实际开发中遇到过太多次深拷贝浅拷贝的问题.总结一下~ JS数据存储和深浅拷贝实际运用① 这是之前写过的一篇文章,解决浅拷贝深拷贝的问题只说了一种方法,今天来补充一下. 介绍深拷贝和浅拷贝都在上一篇文 ...

  4. js对象/数组深度复制

    今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...

  5. js 对象的深复制 解决不能复制undefined (递归)

    用普通的拷贝  JSON.parse和 JSON.stringify 进行对象拷贝是不会拷贝undefined //普通的拷贝   const obj = {         a: {         ...

  6. js对象克隆, 深复制.

    亲测有效: //对象克隆 function clone(obj) { // Handle the 3 simple types, and null or undefined if (null == o ...

  7. JS对象复制

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

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

    js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ...

  9. ES6复制拷贝数组,对象,json数组

    扩展运算符的应用spread打散数组[...] (1)复制数组 数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组. const a1 = [1, 2]; ...

随机推荐

  1. STL基础--基本介绍

    为什么要使用C++标准库 /* * 为什么使用C++标准库: * 1. 代码重用,不用重新造轮子 * 2. 效率(快速,且使用更少的资源). 现代C++编译器经常对C++标准库的代码有优化 * 3. ...

  2. vuex状态管理2

    在vuex的官网https://vuex.vuejs.org中,提到的核心概念一共有5个,分别是State.Getter.Mutation.Action和Module,在上一篇随笔中,我们主要用到其中 ...

  3. [VS2013]常见异常修正

    未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral, PublicKeyToken ...

  4. mysql锁文章

    http://www.genshuixue.com/i-cxy/p/15285416 http://blog.csdn.net/hw_libo/article/details/39080809 htt ...

  5. 2018-7-23到quectel报道

    以后和quectel产品相关的技术都会用这个blog来记录

  6. Hash 迭代程序构造器要求字符串参数--错误解决

    报错提示: ERROR: Hash 迭代程序构造器要求字符串参数,位置: 行 56 列 23.ERROR: DATA STEP 组件对象失败.在“EXECUTION”阶段中止.NOTE: 由于出错,S ...

  7. CRM 2016 执行IFrame 子页面中函数

    CRM代码: var iframe = Xrm.Page.getControl("IFRAME_xxx").getObject(); iframe.contentWindow.Re ...

  8. video兼容--可用

    兼容ie6,7,8,但是播放器会卡顿黑屏<!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  9. (转)SQL知识_SQL Case when 的使用方法

    原文地址:http://www.cnblogs.com/yazdao/archive/2009/12/09/1620482.html Case具有两种格式.简单Case函数和Case搜索函数. --简 ...

  10. Windows server 2008 R2充当路由器实现网络的互联

    1.路由器的工作原理 当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它将直接把IP分组送到网络上,对方就能收到.而要送给不同IP子网上的主机时,它要 选择一个能到达目的子网上的路由器 ...