es6 ...克隆与函数深度克隆
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'
- {name: "laowang", son: {…}}
- name: "laowang"
- son: {name: "xiaowang"}
- __proto__: Object //第三项的fn没克隆出来
es6 ...克隆与函数深度克隆的更多相关文章
- JavaScript的深度克隆
1.JavaScript的五种基本数据类型: Number.String.Boolean.null.undefined. 2.typeof返回的六种数据类型: Number.String.Boolea ...
- ES5-ES6-ES7_字符串与JOSN格式的数据相互转换以及深度克隆新对象
这篇文章主要来讲HTML5中的新方法:parse()把字符串转换成josn格式的数据和stringify()把josn格式的数据转换成字符串 eval()方法的回顾 eval()方法可以将任何字符串解 ...
- Java的赋值、浅克隆和深度克隆的区别
赋值 直接 = ,克隆 clone 假如说你想复制一个简单变量.很简单: int a= 5; int b= a; b = 6; 这样 a == 5, b == 6 不仅仅是int类型,其它七种原始数 ...
- js深度克隆对象
js深度克隆对象 js深度克隆对象简单的记录一下,如下代码: var obj = { typeOf: function(obj) { const toString = Object.prototype ...
- 原型模式 —— Java的赋值、浅克隆和深度克隆的区别
赋值 直接 = ,克隆 clone 假如说你想复制一个简单变量.很简单: int a= 5; int b= a; b = 6; 这样 a == 5, b == 6 不仅仅是int类型,其它七种原始数 ...
- 结构-行为-样式-Javascript 深度克隆函数(转)
突然想到有一回面试的时候有一个问题一直挂在心头,于是乎在网上找了找,这个比较好: //深度克隆 function deepClone(obj) { var result, oClass = isCla ...
- javascript深度克隆函数deepClone
javascript深度克隆函数deepClone function deepClone(obj) { var _toString = Object.prototype.toString; // nu ...
- JavaScript深度克隆
深度克隆函数: function deepClone(obj){ var str = ""; var newobj = obj.constructor === Array ? [] ...
- javascript中对象的深度克隆
记录一个常见的面试题,javascript中对象的深度克隆,转载自:http://www.2cto.com/kf/201409/332955.html 今天就聊一下一个常见的笔试.面试题,js中对象的 ...
随机推荐
- oldboy s21day12.设计商城系统,主要提供两个功能:商品管理、会员管理。
#!/usr/bin/env python# -*- coding:utf-8 -*- # 1.写出三元运算的基本格式及作用?'''a if a>b else b''' # 2.什么是匿名函数? ...
- File Upload XSS
A file upload is a great opportunity to XSS an application. User restricted area with an uploaded pr ...
- Dijkstra算法的C++实现
Dijkstra算法是在图中寻找两顶点最短路径的算法. 下面以下图有向图为例,说明其基本思想. 上图为转化为邻接矩阵存储: 现在我要寻找1点到其他点的最短距离以及路径: a)1点到各点的距 ...
- MySQL入门(参考官网)
目录 一.登陆和退出 1. 远程主机 2. 登陆本机 3. 退出mysql 二.输入查询 三.创建和使用数据库 3.1 创建和选择数据库 3.2 创建表 3.3 将数据加载到表中 3.4 操作表格 3 ...
- pygame学习点滴
pygame分为四块 引用/ 初始化/ 事件处理/ 窗口刷新 普通版壁球游戏 """ 引用部分 """ import pygame, sys ...
- Bootstrap3 模态框 select2搜索框无法输入
<div class="modal fade" role="dialog" aria-hidden="true" data-backd ...
- 肺结节CT影像特征提取(二)——肺结节CT图像特征提取算法描述
摘自本人毕业论文<肺结节CT影像特征提取算法研究> 医学图像特征提取可以认为是基于图像内容提取必要特征,医学图像中需要什么特征基于研究需要,提取合适的特征.相对来说,医学图像特征提取要求更 ...
- html5 - 地图
demo截图: demo链接 代码: <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- 【原创】运维基础之Nginx(1)简介、安装、使用
官方:http://nginx.org nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a ...
- 在js中插入html语句
连上数据库之后,填充数据时往往需要在js中插入html语句 做法是: <body> <div class="modal-body" id="delete ...