1,深拷贝一个对象

  

  如上图所示,obj和tmp是完全两个独立的对象,互不影响。

2,数组复制

  

  如上图所示,arr和tmp是两个完全独立的数组,彼此之间的值互不影响。

3,函数形参中的使用

  

  这里的...args,是对test函数中多余的参数进行收集,并转换成数组的形式进入函数体中

4,一种特殊情况,当数组里面套对象的时候,我们用[...]依然是无法深拷贝一份数据的,这个时候我们就要自己写递归函数了

  案例:

  

  解决办法:自己写一个函数

function copySelf(obj) {
var newobj = obj.constructor === Array ? [] : {};
if (typeof obj !== "object") {
return;
}
for (var i in obj) {
newobj[i] = typeof obj[i] === "object" ? copySelf(obj[i]) : obj[i];
}
return newobj;
}

我们可以用 copySelf 函数去深拷贝一份数据

  结果:

  

JS中有关(...)的介绍的更多相关文章

  1. js中的this介绍

    今天跟大家一起简单的来了解一下js中一个有趣的东西,this. 在js中我们用面向对象的思想去编写的时候,各个模块之间的变量就不那么容易获取的到了,当然也可以通过闭包的方式拿到其他函数的变量,如果说每 ...

  2. JS中数组的介绍

    一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...

  3. JS中闭包的介绍

    闭包的概念 闭包就是能够读取其他函数内部变量的函数. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascri ...

  4. JS中的闭包 详细解析大全(面试避必考题)

    JS中闭包的介绍   闭包的概念 闭包就是能够读取其他函数内部变量的函数. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变 ...

  5. Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...

  6. js中的json对象详细介绍

    JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Ob ...

  7. JS中令人发指的valueOf方法介绍

    彭老湿近期月报里提到了valueOf方法,兴致来了翻了下ECMA5里关于valueOf方法的介绍,如下: 15.2.4.4 Object.prototype.valueOf ( ) When the ...

  8. 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍

    一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...

  9. js中关于Blob对象的介绍与使用

    js中关于Blob对象的介绍与使用   blob对象介绍 一个 Blob对象表示一个不可变的, 原始数据的类似文件对象.Blob表示的数据不一定是一个JavaScript原生格式 blob对象本质上是 ...

  10. js中push和join方法使用介绍

    push和join方法想必大家并不陌生吧,在本文将为大家详细介绍下js中的push和join方法的使用.代码: <script type="text/javascript"& ...

随机推荐

  1. 00_java进阶笔记

    _01_Object类 /* * java.util.Object Object类是最顶层的类,每个类都使用Object类作为父类 * 所有对象(包括数组)都实现这个类的方法 * 注: * 使用toS ...

  2. element ui中table动态列切换时,表格样式变形

    现象:定义多个头部和多个数据体,可以自由切换不同的头部和相应的数据体,但是切换过程表格会变形. 解决办法:table增加索引,切换头部和数据时,修改为不同的索引,即可解决 重点:表格标签上的  key ...

  3. KETTLE 首次连DB2报错,无驱动。

    DB2 把相应数据库的jar包放入 data-integration\lib 或者data-integration\libswt\win64 重启kettle程序 连接成功 驱动包,我是用的aqua工 ...

  4. js,php中的面向对象

    面向对象 js中的面向对象: 面向对象(OOP):通过函数封装得到的一个类 1.类的本质还是函数 每个类(函数)天生有一个prototype的属性,这个prototype又是一个对象,这个对象里有个c ...

  5. 南大ics-pa/PA0过程及感想

    实验教程地址:https://nju-projectn.github.io/ics-pa-gitbook/ics2022/index.html 一.Ubuntu安装 在清华大学镜像站下载了Ubuntu ...

  6. 源码编译mariadb

    1.写一个一键安装 mariadb 数据库脚本. [root@centos8mini ~]#vim install_mariadb #!/bin/bash#安装包PACKAGE="maria ...

  7. centos7下的防火墙部署

    iptables以及firewalld其实都是防火墙管理工具,说白一点,就是一个服务,用来保障公网与内网 iptables 由于centos7没有自带,需要自己安装 安装 yum install ip ...

  8. prepare

    目标: 自动驾驶感知负责深度学习感知算法开发,包括目标识别.分割.检测.多目标追踪等有扎实的数理基础,有Linux.ROS.QNX等开发经验,熟悉C/C++编程,有良好的编程习惯 他人简历: skil ...

  9. git技能树总结

    1. git简介 版本控制: 指的是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统发展可分三个阶段:本地版本控制系统 -> 集中式版本控制系统 -> 分布 ...

  10. IDEA中常见问题

    idea中不存在.iml文件项目主目录下执行命令行mvn idea:module