blog icon indicating copy to clipboard operation
blog copied to clipboard

ES7 对象展开运算符,Object Spread notation

Open WangShuXian6 opened this issue 6 years ago • 1 comments

####示例1

let objectA = {
	a: 1,
	b: 2
}

let objectB = {
	...objectA,
	c: 3
}
console.log(objectB)
//{a: 1, b: 2, c: 3}

...Object. 对象展开操作符,类似数组展开操作符,会将一个对象的一级属性全部取出:

let objectB = {
	...objectA,
	c: 3
}

等同于

let objectB = {
	a: 1,
	b: 2,
	c: 3
}

####示例2

let objectC = {
	a: 1,
	b: 2
}

let objectD = {
	...objectC,
	b: 9,
	c: 3
}
console.log(objectD)
//{a: 1, b: 9, c: 3}

被展开的对象后面位置的参数都将合并到被展开的对象内返回,并且覆盖同名参数。 上例等同于

let objectC = {
	a: 1,
	b: 2
}

let objectD = {
	a: 1,
	b: 2,
	b: 9,
	c: 3
}
console.log(objectD)
//{a: 1, b: 9, c: 3}

于是后面的参数b将前面的参数b覆盖了。

WangShuXian6 avatar May 09 '18 12:05 WangShuXian6

Object.assign 特殊用法 合并数组和对象

常用于 react hooks,可同时导出数组与对象两种模式

const a1=1

const a2=2

const a=[a1,a2]

const b={b1:3,b2:4}

const c=Object.assign(a,b)

console.log(c)
// [1, 2, b1: 3, b2: 4]

// 解构 c
const [c1,c2,c3]=c

console.log(c1)
// 1
console.log(c2)
// 2
console.log(c3)
// undefined


const {b1:c3,b2:c4}=c

console.log(c3)
// 3

console.log(c4)
// 4

WangShuXian6 avatar Jul 27 '21 06:07 WangShuXian6