js ... 运算符
定义:
扩展运算符(...)是ES6的语法,用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中。
基本用法
let person = {name: "Amy", age: 15} let someone = { ...person } someone // {name: "Amy", age: 15}
特殊用法
数组
由于数组是特殊的对象,所以对象的扩展运算符也可以用于数组。
let foo = { ...['a', 'b', 'c'] }; foo // {0: "a", 1: "b", 2: "c"}
空对象
如果扩展运算符后面是一个空对象,则没有任何效果。
let a = {...{}, a: 1} a // { a: 1 }
Int类型、Boolen类型、undefined、null
如果扩展运算符后面是上面这几种类型,都会返回一个空对象,因为它们没有自身属性。
// 等同于 {...Object(1)} {...1} // {} // 等同于 {...Object(true)} {...true} // {} // 等同于 {...Object(undefined)} {...undefined} // {} // 等同于 {...Object(null)} {...null} // {}
字符串
如果扩展运算符后面是字符串,它会自动转成一个类似数组的对象
{...'hello'} // {0: "h", 1: "e", 2: "l", 3: "l", 4: "o"}
对象的合并
let age = {age: 15} let name = {name: "Amy"} let person = {...age, ...name} person; // {age: 15, name: "Amy"}
注意事项
自定义的属性和拓展运算符对象里面属性的相同的时候:
自定义的属性在拓展运算符后面,则拓展运算符对象内部同名的属性将被覆盖掉。
let person = {name: "Amy", age: 15}; let someone = { ...person, name: "Mike", age: 17}; someone; //{name: "Mike", age: 17}
自定义的属性在拓展运算度前面,则变成设置新对象默认属性值。
let person = {name: "Amy", age: 15}; let someone = {name: "Mike", age: 17, ...person}; someone; //{name: "Amy", age: 15}
自定义的属性在拓展运算度前面,且该属性是拓展预算符后对象里的,则会取出该对象的值,拓展预算符则会取出剩下的属性。
let person = {name: "Amy", age: 15}; let someone = {name, ...person}; someone; //{name: "Amy", age: 15}
原文地址https://www.cnblogs.com/caihongmin/p/16395573.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)