回顾JavsScript对象的克隆
JS对象的数据类型分为两大类:原始类型(string, boolean, number,undefined, function)和 对象类型(array, object, null)。
1、浅度克隆
浅度克隆原始类型为值传递,对象类型为引用传递(即修改数组或对象值会同时修改另一个数组或对象相应的值)
function clone(origin, target) {var target = target || {};for (var key in origin) {target[key] = origin[key];}return target; }
2、深度克隆
所有数据类型均为复制,两个对象完全独立,修改其中一个对象值不会影响另一个。
function deepClone(origin, target) {var target = target || {}; // 目标对象toStr = Object.prototype.toString, // 简化toString方法isArr = '[object Array]'; // toString方法返回的数组类型for (var key in origin) { // 遍历原对象if (origin.hasOwnProperty(key)) { //判断是否是自身属性if (typeof(origin[key]) == 'object' && origin[key] !== null) { // 是引用类型且不是nullif (toStr.call(origin[key]) == isArr) { // 判断是否是数组target[key] = []; // 数组} else { target[key] = {}; // 对象 }deepClone(origin[key], target[key]); // 递归} else {target[key] = origin[key]; // 原始值或null }}}return target; }
转载于:https://www.cnblogs.com/splendid/p/10263408.html
回顾JavsScript对象的克隆相关推荐
- js实现对象完美克隆
我们知道,在js中,当object作为参数传递到函数中进行处理后,实际上是修改了传入的对象本身(或者说是对象的引用),但很多时候我们并不希望函数去修改我们的这些对象参数,这就需要使用到对象的克隆,我们 ...
- php怎么克隆,利用php怎么对对象进行克隆
利用php怎么对对象进行克隆 发布时间:2021-02-09 10:34:18 来源:亿速云 阅读:75 作者:Leah 本篇文章给大家分享的是有关利用php怎么对对象进行克隆,小编觉得挺实用的,因此 ...
- 【JAVA零基础入门系列】Day14 Java对象的克隆
[JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...
- 对象的克隆——原型模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7424559 张纪中版<西游记>以出乎意料的造型和雷人的台词遭到广大观众朋友的热 ...
- JAVA复习(对象的克隆、正则表达式)
对象的克隆 对象的克隆就是复制的操作,和之前学习的引用传递不同 在引用传递中一个 实例 可以有多个名字 但是多个名字都指向一个对象 克隆出来的对象 和之前的对象 没有任何的引用关系 想要实现对象的克隆 ...
- 返回对应对象的克隆方法
代码 using System; using System.Collections.Generic; using System.Text; using System.Collections; usin ...
- java浅度克隆_java对象 深度克隆(不实现Cloneable接口)和浅度克隆
为什么需要克隆: 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说 ...
- Javascript中的对象拷贝(对象复制/克隆)
Javascript中的对象拷贝(对象复制/克隆) 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 1. 对象的引用 要说"拷贝"还要先说"引 ...
- JS篇之数组、对象的克隆
1. 数组的克隆 一. 普通一维数组深克隆let arr = [1,2,3](1) for循环遍历数组pushlet arr1 = []for( let i of arr ){arr1.push(i) ...
最新文章
- 玩转Windows 7
- boost智能指针之shared_ptr,scoped_ptr,intrusive_ptr,weak_ptr源码简析
- Win7系统中Microsoft Office Word2003已停止工作
- CodeForces - 1092F Tree with Maximum Cost(树形dp+树根转移)
- Spring常见面试题
- 《LoadRunner 12七天速成宝典》—第2章2.6节第二个性能测试案例
- Apache Flink 结合 Kafka 构建端到端的 Exactly-Once 处理
- iPhone 12s Pro渲染图曝光:屏幕和相机将成升级重点
- winform DataGridView的虚模式填充,CellValueNeeded事件的触发条件
- 腾达无线路由器如何开启无线中继功能
- Bus Hound实用教程
- 技术总监岗位职责和要求
- JavaScript 实现延迟合并处理任务
- 杨忠愍斗严嵩,为国为民,名垂千古
- 程序员做外包,真的没地位没出路吗?
- 数字信号处理基础----采样定理
- Archlinux arm的国内镜像源(for Banana Pi / Raspberry Pi , etc)
- 开源为什么是“白色”的?
- js判断身份证号码是否正确
- java地铁最短距离_地铁线路最短路径问题
热门文章
- dosbox edit.exe 如何使用_微软软件如何激活?这个神器分享给你!
- Codeforces Round #710 (Div. 3)
- java hashcode相等_关于java:hashCode实现,用于“等于某些字段相等”
- tcp socket编程 java_JAVA TCP Socket编程 计算题
- git与github远程连接代码库使用笔记
- 机器学习︱非平衡数据处理方式与评估
- 01-HTML基础与进阶-day4-录像250
- (17/24) webpack实战技巧:生产环境和开发环境并行设置,实现来回切换
- Kubernetes应用跨可用区实战
- 一行命令获取当前JVM所有可设置的参数以及当前默认值