es6的...运算, 可以进行一层的深度克隆; 在多层的情况下,不要用这种啊.

用深度克隆函数,或者JSON.parse(JSON.stringify(obj)),但json方式要求不能有属性值是函数的对象

 const obj = {
name:'laowang',
son:{
name:'xiaowang'
}
}
const obj3 = {};
obj3.name = obj.name;//这个效果和...运算时一致的;注意这和两个对象的地址一样的情况不同
const obj1 = {...obj};
const obj2 = obj;
obj.name = "laoli";
console.log(obj1.name)//laowang 进行了深度克隆,和obj3的效果一样
console.log(obj2.name)//laoli
console.log(obj3.name)//laowang

用JSON的方式:

const obj = {
name:'laowang',
son:{
name:'xiaowang'
},
fn: function(){
console.log('fn')
}
} const obj1 = JSON.parse(JSON.stringify(obj));
obj.name = 'laoli'

  

obj1
  1. {name: "laowang", son: {…}}
    1. name: "laowang"
    2. son: {name: "xiaowang"}
    3. __proto__: Object  //第三项的fn没克隆出来

es6 ...克隆与函数深度克隆的更多相关文章

  1. JavaScript的深度克隆

    1.JavaScript的五种基本数据类型: Number.String.Boolean.null.undefined. 2.typeof返回的六种数据类型: Number.String.Boolea ...

  2. ES5-ES6-ES7_字符串与JOSN格式的数据相互转换以及深度克隆新对象

    这篇文章主要来讲HTML5中的新方法:parse()把字符串转换成josn格式的数据和stringify()把josn格式的数据转换成字符串 eval()方法的回顾 eval()方法可以将任何字符串解 ...

  3. Java的赋值、浅克隆和深度克隆的区别

    赋值 直接  = ,克隆 clone 假如说你想复制一个简单变量.很简单: int a= 5; int b= a; b = 6; 这样 a == 5, b == 6 不仅仅是int类型,其它七种原始数 ...

  4. js深度克隆对象

    js深度克隆对象 js深度克隆对象简单的记录一下,如下代码: var obj = { typeOf: function(obj) { const toString = Object.prototype ...

  5. 原型模式 —— Java的赋值、浅克隆和深度克隆的区别

    赋值 直接  = ,克隆 clone 假如说你想复制一个简单变量.很简单: int a= 5; int b= a; b = 6; 这样 a == 5, b == 6 不仅仅是int类型,其它七种原始数 ...

  6. 结构-行为-样式-Javascript 深度克隆函数(转)

    突然想到有一回面试的时候有一个问题一直挂在心头,于是乎在网上找了找,这个比较好: //深度克隆 function deepClone(obj) { var result, oClass = isCla ...

  7. javascript深度克隆函数deepClone

    javascript深度克隆函数deepClone function deepClone(obj) { var _toString = Object.prototype.toString; // nu ...

  8. JavaScript深度克隆

    深度克隆函数: function deepClone(obj){ var str = ""; var newobj = obj.constructor === Array ? [] ...

  9. javascript中对象的深度克隆

    记录一个常见的面试题,javascript中对象的深度克隆,转载自:http://www.2cto.com/kf/201409/332955.html 今天就聊一下一个常见的笔试.面试题,js中对象的 ...

随机推荐

  1. 【转载】C++ vector的用法

    http://www.cnblogs.com/Nonono-nw/p/3462183.html

  2. Collections of Zujin Zhang's Published works

    I am not good, but I shall do my best to be better. Any questions, please feel free to contact zhang ...

  3. ORACLE使用CASE WHEN的方法

    先写草稿. 说下我的需求,ORACLE数据库有两个字段RECEIVER_MOBILE与RECEIVER_PHONE,同为联系方式.当RECEIVER_MOBILE为空的时候,需要用到RECEIVER_ ...

  4. PowerDesigner使用总结(转)

    PowerDesigner使用总结一.使用PowerDesigner生成HTML功能 使用PowerDesigner设计数据库关系以后,可以生成HTML,供团队成员进行讨论. Step 1:创建一个n ...

  5. ansible 使用记录

    copy: ansible server -m copy -a 'src=/etc/ansible/port/iptables dest=/etc/sysconfig/iptables owner=r ...

  6. Qt websocket

    1.pro  添加 QT += websockets #ifndef MYWEBSOCKETSERVER_H #define MYWEBSOCKETSERVER_H #include <QObj ...

  7. fiddler启用过滤规则只显示想要的接口数据

    fiddler启用过滤规则只显示想要的接口数据 比如只显示192.168.11.80站点数据 点击应用规则就可以只显示192.168.11.80了

  8. ILMerge在MSBuild与ILMerge在批处理文件中运行

    ILMerge ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序.它可以免费使用,并以NuGet包的形式提供. 如果您在使用它时遇到任何问题,请与我们联系.(mbarnett at ...

  9. jq-css、class、属性操作

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. C#学习-子类的初始化顺序

    使用了继承之后,当我们初始化一个子类时,除了会调用子类的构造函数外,同时也会调用基类的构造函数. 子类的初始化顺序如下: (1)初始化类的实例字段: (2)调用基类的构造函数: (3)调用子类的构造函 ...