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 相关文章推荐
自己的js工具 Event封装
Aug 21 Javascript
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
使用Java实现简单的server/client回显功能的方法介绍
May 03 Javascript
js工具方法弹出蒙版
May 08 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
Jul 04 Javascript
node.js中的console用法总结
Dec 15 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
Jquery Easyui日历组件Calender使用详解(23)
Dec 18 Javascript
jQuery插件form-validation-engine正则表达式操作示例
Feb 09 Javascript
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 jQuery
VUE 全局变量的几种实现方式
Aug 22 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 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
php列出一个目录下的所有文件的代码
2012/10/09 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
Javascript中replace()小结
2015/09/30 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Django静态文件加载失败解决方案
2020/08/26 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
生物制药专业求职信
2014/03/11 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
群众路线领导对照材料
2014/08/23 职场文书
学校师德师风整改方案
2014/10/28 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
初中地理教学反思
2016/02/19 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL