一、数组的解构
(1)数组的赋值和基本使用
1、基本用法: [a, b, c] = [1, 2, 3]
2、可嵌套:[a1, [b1], c1] = [1, [2], 3]
3、可忽略:[a2, , b2] = [1, 2, 3]
4、剩余运算符: [a3, ...b3] = [1, 2, 3]:剩余的2,3都归b3所有,b3返回一个数组
let [a3, ...b3] = [1, 2, 3];
//由于数组的一一对应,a3的值就为1,其余的2,3都归为b3,并且返回一个数组
5、默认值法:[a4 = 1, b4 = 2] = []
6、字符串的数组模型解构也是可以的
[z, x, c2, v] = "hello"
与其字符一一对应,相当于是循环输出
let [z, x, c2, v] = "hello";
//输出的值就只有'h','e','l','l',剩余的值就会直接忽略
(2)、数组如果解构不成功,则会返回undefined
二、对象的解构
1、可嵌套
let {
foo,
har
} = {
foo: "Tom",
har: "bbb"
}
2、可忽略。与其数组是一一对应的
3、剩余运算
let {
a,
b,
...rest
} = {
p: 1,
b: 2,
e: 3,
h: 4
}
{a,b,...rest} = {p: 1,b: 2,e: 3,h: 4},其值和属性名必须一一对应,不然就undefined,
...rest:剩余运算符,就是把这之中的所有未背赋值的都归为其所有
三、Symbol函数
其为唯一性的函数,使用了Symbol函数,不能使用点语法
使用中括号链接
const PEO_NAME = Symbol()
const PEO_AGE = Symbol()
let obj = {
[PEO_NAME]: "一斤代码"
}
obj[PEO_AGE] = "18"
console.log(obj[PEO_NAME])
console.log(obj[PEO_AGE])
let obj1 = {
[Symbol('name')]: "tom",
title: "English",
age: 18
}
取值,取出定义在变量里的值
Object.keys:只能取出常量或者其他的变量,去取不出定义的Symbol()里面定义的私有变量
Object.getOwnPropertySymbol()方法,只能取出定义在里面的私有变量
Reflect.ownKeys()可以取出所有的变量
const PEO_NAME = Symbol()
const PEO_AGE = Symbol()
let obj = {
[PEO_NAME]: "一斤代码"
}
obj[PEO_AGE] = "18"
console.log(obj[PEO_NAME])
console.log(obj[PEO_AGE])
let obj1 = {
[Symbol('name')]: "tom",
title: "English",
age: 18
}
console.log(Object.keys(obj1));
console.log(Object.getOwnPropertySymbols(obj1));
console.log(Reflect.ownKeys(obj1));
希望以上的对你有所帮助,谢谢观看