解构:
对象的解构:
//name age用来匹配,one two 才是用来接收的值
let {name:one, age:two} = {name:'zhangsan', age: 13}
//console.log(name, age); 报错
console.log(one, two);//zhangsan 13
ES6对象简写
// let {name:name, age:age} = {name:'zhangsan', age: 13}
let {name, age} = {name:'LBJ', age:23}
console.log(name, age);// LBJ 23
可以不按照顺序:
let {age, name} = {name:'LBJ', age:23}
console.log(name, age);// LBJ 23
当解构不成功时,返回undefined
let {age, name, email} = {name:'LBJ', age:23}
console.log(name, age, email);// LBJ 23 undefined
可以设置默认值,解构不成功时,值时默认值,成功则使用解构的值。
例如当向一个函数传参时,如果有些参数希望有默认值
//解构不成功,使用默认值
let { email = '163@.com'} = {name:'LBJ', age:23}
console.log(email);//163@.com
//在函数中的简单应用
function fun({name, age, email = '@163.com'}) {
console.log(name, age, email);//LBJ 36 @163.com
}
fun({name:'LBJ', age:'36'})//没有传递email
//解构成功 使用成功后的值
let { email = '163@.com'} = {name:'LBJ', age:23, email:'@qq.com'}
console.log( email);//@qq.com
一些其他的应用
//解构得到对象的方法
let obj = {
sayName() {
console.log('this is fun');
}
}
let {sayName} = obj;
sayName()//this is fun
//Math 也是一个对象
let {random} = Math;//通过解构 获得Math的静态方法
console.log(typeof random);//function
console.log(random());//0~1 的随机数
//使用push方法 往类数组对象中推入一个值
let {push} = [];//通过解构的方式,从Array的原型上得到push的方法
//let {push} = new Array;
console.log(push);//[Function: push]
let argument = {"name":'LBJ', "age":'26'}
push.call(argument, 'gender')
console.log(argument);//{ '0': 'gender', name: 'LBJ', age: '26', length: 1 }
数组的解构:
let [foo, bar, baz] = [1, [[2]], [3]]
console.log(foo)// 1
console.log(bar)// [[2]]
console.log(baz);// [3]
let [ [[yar]], [xy]] = [1, [[2]], [3]]
console.log(yar);//2
console.log(xy); //3
拓展运算符
...
⽤于取出参数对象的所有可遍历属性,拷⻉到当前对象之中。
用于实现对象的深浅拷贝
let obj = {name:"KOBE", age:23, gender:'male', message:{email:'@.com', tel:1234}};
let newObj = {...obj}
console.log(obj === newObj);//false
console.log(obj.message === newObj.message);//true
合并对象:
let obj = {name:"KOBE", age:23, gender:'male', message:{email:'@.com', tel:1234}};
let obj2 = {weight: '100KG', height: '1.98'}
let newObj = {...obj, ...obj2}
console.log(newObj);
展开数组:
let arr = [1,2,...[8,9,10],...[14,...[5,7]]]
console.log(arr);[1, 2, 8, 9, 10, 14, 5, 7]
向函数传递多个参数时:
//一个形参 接收多个实参
function fun(str, ...b) {
console.log(str);
console.log(b);//[ 1, 2, 3, 4 ]
}
fun('str',1,2,3,4)