爱编程的设计师 2023-05-23 13:08 采纳率: 94.4%
浏览 43
已结题

请问changeName方法return返回的值是一个对象,这个是什么语法


const p1 = {
    name:'lily',
    age:1,
    city:'北京'
}
function changeName(p){
    return{...p,name:'ford'}
}
  • 写回答

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
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 5月31日
  • 已采纳回答 5月23日
  • 创建了问题 5月23日

悬赏问题

  • ¥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驱动开发环境