JavaScript中展开运算符及应用的实例代码


Posted in Javascript onJanuary 14, 2021

展开运算符(spread operator)允许一个表达式在某处展开。展开运算符在多个参数(用于函数调用)或多个元素(用于数组字面量)或者多个变量(用于解构赋值)的地方可以使用。

let obj1 = {
 value1: 1,
 value2: 2
};
let obj2 = {...obj1
};
console.log(obj2); // {value1: 1, value2: 2}

上面的用法实际相当于

obj2 = {value1: 1, value2: 2}

展开运算符的写法与obj2 = obj1直接赋值的写法的区别在于如果直接赋值的话,对于引用类型来说,相当于只是赋值了obj1的内存空间地址,当obj2发生改变的时候,obj1也会随着发生改变。而是用展开运算符写法的话,由于obj1对象中的属性类型都是基本类型,相当于重新创建了一个对象,此时obj2发生改变的时候,并不会影响obj1这个对象。但是仅限于其属性都为基本类型的情况(或者说只进行了一层的深拷贝)。如果该对象中的属性还有引用类型的话,修改属性中引用类型的值,则两个对象的属性值都会被修改。

let obj1 = {
 attri1: [3, 6, 0],
 attri2: 4,
 attri4: 5
};
let obj2 = {...obj1
};

obj2.attri2 = 888;
obj2.attri1[0] = 7;

console.log('obj1:', obj1);
console.log('obj2:', obj2);

展开运算符的应用

1.在函数中使用展开运算符

function test(a, b, c){};

let arr = [1, 2, 3];
test(...arr);

2.数组字面量中使用展开运算符

let arr1 = [1, 2];
let arr2 = [...arr1, 3, 4]; // [1, 2, 3, 4]

// 使用push方法
let arr1 = [1, 2];
let arr2 = [3. 4];
arr1.push(...arr2); // [1, 2, 3, 4]

3.用于解构赋值,解构赋值中展开运算符只能用在最后,否则会报错。

// 解构赋值中展开运算符只能用在最后。
let [a, b, ...c] = [1, ,2, 3, 4]
console.log(a, b, c) // 1, 2, [3, 4]

4.类数组变成数组

let oLis = document.getElementsByTagName("li");
let liArr = [...oLis];

5.对象中使用展开运算符
ES7中的对象展开运算符符可以让我们更快捷地操作对象:

let {x,y,...z}={x:1,y:2,a:3,b:4};
x; // 1
y; // 2
z; // {a:3,b:4}

将一个对象插入另外一个对象当中:

let z={a:3,b:4};
let n={x:1,y:2,...z};
console.log(n); //{x:1,y:2,a:3,b:4}

合并两个对象:

let a={x:1,y:2};
let b={z:3};
let ab={...a,...b};
console.log(ab); // {x:1,y:2,z:3}

到此这篇关于JavaScript中展开运算符及应用的实例代码的文章就介绍到这了,更多相关js展开运算符内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript Object与Function使用
Jan 11 Javascript
JavaScript学习笔记(十)
Jan 17 Javascript
Jquery 1.42 checkbox 全选和反选代码
Mar 27 Javascript
JQuery Tips相关(1)----关于$.Ready()
Aug 14 Javascript
用javascript将数据导入Excel示例代码
Sep 10 Javascript
jQuery简单实现遍历数组的方法
Apr 14 Javascript
JavaScript数据类型学习笔记
Jan 25 Javascript
深入分析Javascript事件代理
Jan 30 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 Javascript
JavaScript实现简易计算器小功能
Oct 22 Javascript
js中延迟加载和预加载的具体使用
Jan 14 #Javascript
JS中箭头函数与this的写法和理解
Jan 14 #Javascript
JavaScript this关键字的深入详解
Jan 14 #Javascript
Vue实现多页签组件
Jan 14 #Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 #Vue.js
Vue中引入svg图标的两种方式
Jan 14 #Vue.js
vue+element table表格实现动态列筛选的示例代码
Jan 14 #Vue.js
You might like
一个简单计数器的源代码
2006/10/09 PHP
网络资源
2006/10/09 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php上传文件常见问题总结
2015/02/03 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
Jquery Change与bind事件代码
2011/09/29 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
python的几种开发工具介绍
2007/03/07 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
详解python调度框架APScheduler使用
2017/03/28 Python
实践Vim配置python开发环境
2018/07/02 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
护林防火标语
2014/06/27 职场文书
国贸专业求职信
2014/06/28 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL