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 相关文章推荐
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
May 22 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
bootstrap table 数据表格行内修改的实现代码
Feb 13 Javascript
zTree获取当前节点的下一级子节点数实例
Sep 05 Javascript
webpack4打包vue前端多页面项目
Sep 17 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
微信小程序实现折线图的示例代码
Jun 07 Javascript
使用axios请求接口,几种content-type的区别详解
Oct 29 Javascript
React配置子路由的实现
Jun 03 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
php 分页函数multi() discuz
2009/06/21 PHP
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php日历制作代码分享
2014/01/20 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
显示、隐藏密码
2006/07/01 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
深入了解NumPy 高级索引
2020/07/24 Python
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
机关作风建设心得体会
2014/10/22 职场文书
2014年妇女工作总结
2014/12/06 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书