const p1 = {
name:'lily',
age:1,
city:'北京'
}
function changeName(p){
return{...p,name:'ford'}
}
请问changeName方法return返回的值是一个对象,这个是什么语法
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 忍冬 2023-05-23 15:16关注
想必题主不清楚三个点(...)代表着什么,在这里先介绍下:
介绍:展开语法(叫做 扩展运算符),可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开,还可以在构造字面量(字面量一般指 [1, 2, 3]或者 { name: 'rendong' } 这种简洁的构造方式)对象时,将对象表达式按 key-value 的方式展开(简洁些说,可用于将集合和数组中的元素扩展为单个单独的元素)。由三个点(...)表示,在ES6中引入,在 chrome 46 版本中开始支持
作用:扩展运算符可用于创建和克隆数组和对象、将数组作为函数参数传递、从数组中删除重复项等等
语法:扩展运算符只能用于可迭代对象,他必须在可第二代对象之前使用,没有任何分隔,例如:console.log(...arr)
使用场景
- 找到数字数组中的最小值
let arr = [10, 4, 6]; Math.min(...arr); // 4
- 将现有数组克隆到一个新数组中,并且对新数组所做的任何修改都不会影响原数组,注意只能实现浅拷贝
let arr = [1,2,3,4] let arr2 = [...arr] arr2.push(5); console.log(arr) // [1, 2, 3, 4] console.log(arr2) // [1, 2, 3, 4, 5]
- 将多个数组连接为一个数组
let arr = [4, 5, 6] let arr2 = [1, 2, 3] let arr3 = [...arr, ...arr2] // [4, 5, 6, 1, 2, 3]
- 还可以在字符串上使用扩展运算符来创建一个数组,每个项都是字符串中的一个字符
let str = 'rendong' let arr = [...str]; // ['r', 'e', 'n', 'd', 'o', 'n', 'g']
- 浅拷贝另一个对象
let person = { name: '忍冬', age: 18 } let obj = { ...person }; // {name: '忍冬', age: 18}
- 将多个对象合并为一个,注意:若对象共享相同的属性名称,将使用最后一个对象对应的值
let person = { name: '忍冬', age: 18 } let person2 = { name: '连翘', site: 'beijing' } let person3 = { ...person, ...person2}; // {name: '连翘', age: 18, site: 'beijing'}
- 从数组创建对象,其中数组中的索引成为对象属性,数组索引处的值成为对象属性的值
let arr = ['忍', '冬'] let obj = { ...arr }; // {0: '忍', 1: '冬'}
- 从字符串创建对象,其中字符串中的索引成为对象属性,字符串索引处的字符成为对象属性的值
let str = '忍冬' let obj = {0: '忍', 1: '冬'}
- 将 NodeList 节点集合转换为数组
let nodeList = document.querySelectorAll('div'); // NodeList [div, div] let arr = [ ...nodeList ]; // Array [div, div]
- 从数组中删除重复项:使用 Set对象,Set 对象是一个仅存储唯一值的集合,可以使用扩展运算符删除数组中的重复项
let arr = [ 10, 10, 12, 2 ]; let arr2 = [...net Set(arr)]; // [10, 12, 2]
- 剩余参数:剩余参数语法允许将一个不定数量的参数表示为一个数组
let arr = [2,3,1,2] function fnSum(...aParam) { let sum = 0; aParam.forEach(v=> sum+=v); return sum; } fnSum(...arr); // 8
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥30 STM32 INMP441无法读取数据
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境