美文网首页
延展操作符(Spread operator)

延展操作符(Spread operator)

作者: aaagu1234 | 来源:发表于2020-05-12 19:40 被阅读0次

延展操作符 = ...可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开,还可以在构造对象时,将对象表达式按key-value的方式展开。
函数调用
function(...iterableObj)

数组构造或者字符串

[...iterableObj,'4',...'hello',6]

es2018下构造对象时,进行克隆或者属性拷贝

let objClone={...obj}

function sum(x,y,x){

return x+y+z

}

const numbers = [1,2,3]

//不使用延展操作符

sum.apply(null, numbers)

//使用延展操作符

sum(...numbers)

//或者在构造数组时
//如果没有展开语法,只能组合使用push,splice,concat,slice
//将已有数组元素变为新数组的一部分
const people=['jan','tom']
const person = ['ali',...people,'alliance','ketty']
console.log(person)//Ali,jan,tom,alliance,ketty
//另外,还有一个例子
var arr =[1,2,3]
var arr2=[...arr]
arr2.push(4)
console.log(arr2)//1,2,3,4

展开语法与Obj.assign()行为一致,都是执行浅拷贝,也就是只遍
历一层,不会遍历父对象相关的数据

 var arr1=[0,1,2]
 var arr2=[3,4,5]
 var arr3=[...arr1,...arr2] 等同于var arr4 = arr1.concat(arr2)

es2018中增加了对对象的支持

  var obj1 = {foo:1,foo2:2}
  var obj2={foo3:12,foo4:30}
 
  var clonedObj={...obj1}
  var mergedObj={...obj1,...obj2}

转载: https://www.cnblogs.com/fangsmile/p/12397096.html

相关文章

网友评论

      本文标题:延展操作符(Spread operator)

      本文链接:https://www.haomeiwen.com/subject/ifuinhtx.html