ES6解构
1、解构对象案例
var obj = {a:"1",b:"2"}
const {a,b}=obj
console.log(a)//1
console.log(b)//2
var obj = {a:"1",b:"2"}
const {c,b}=obj
console.log(c)//undefined
console.log(b)//2
var obj = {a:"1",b:"2"}
const {c="6",b}=obj
console.log(c)//6
console.log(b)//2
var obj = {a:"1",b:"2",c:"3",d:"4"}
const {a,b,...z} = obj
console.log(a)//1
console.log(b)//2
console.log(z)//{c:3,d:4}
console.log(z.c+"+++"+z.d)//3+++4
2、解构方法案例
var obj = {
hello:function(){console.log("aaa")}
}
const {hello}=obj
hello()//控制台输出字符串aaa
3、解构数组案例
var arr = ["hello","world"]
var arr1 = ["a"]
var arr2 = ["bb"]
const res=[...arr,...arr1,...arr2]
console.log(res)//["hello","world","a","bb"]
var a=[{aa:1,bb:"2"},{cc:"3",dd:"4"}]
var b=[{ee:5,ff:"6"},{gg:"7",hh:"8"}]
const [c,...d]=[...a,...b]
console.log(JSON.stringify(c))
console.log(JSON.stringify(d))
注意:解构数组必须用数组承接
var a=[{aa:1,bb:"2"},{cc:"3",dd:"4"}]
var b=[{ee:1,ff:"2"},{gg:"3",hh:"4"}]
console.log(JSON.stringify(a))
console.log(JSON.stringify(b))
console.log(JSON.stringify([...a,...b]))
console.log(JSON.stringify(...a))//在json.stringify下打印异常
console.log(JSON.stringify([...a]))
扩展操作符只能用于可迭代对象,非可迭代对象会报错
补充:以上都是单层解构,如果是嵌套对象解构必须写成嵌套格式,比如:
let arr = ['a','b',['c','d']]
let [name,,[other]] = arr
console.log(name)//a
console.log(other)//[c,d]
arr[2][0] = 123
console.log(other)//[c,d]
//解构的最里层值必须是单层对象
let obj = {"a":1,"b":{"c":2,"d":{"e":111,"f":222}}}
let {a,b:{c,d}} = obj
console.log(a)//1
console.log(b)//undefined
console.log(c)//2
console.log(d) //{"e":111,"f":222}