ES6解构,对象+对象API拓展,数组+数组API拓展

1-ES6解构:

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构,解构的本质属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。如果解构不成功,变量的值就等于undefined。

1.数组解构

几种解构方式:

1.

let [a,b,c] = [1,2,3];
console.log(a,b,c);  //1,2,3

2.

let [a,b,c] = [1,[2,3],4]
console.log(a,b,c);  //1,[2,3],4

3.不完全解构

let [a,[b],c] = [1,[2,3,4],5];
console.log(a,b,c);  //1,2,5

4.集合解构  ... 拓展运算符

拓展运算符:
      ...用在=左边,聚合的作用(对象、数组的解构)
      ...用在=右边,展开(剥离)的作用

let [a,...b] = [1,2,3,4,5];
console.log(a,b);  //1,[2,3,4,5]

5.默认值解构:不设置对应值时,默认值生效,匹配到值后,默认值不生效

let [a,b=5,c,d] = [1,2,3,4,5];
console.log(a,b,c,d);  //1,2,3,4

let [a,b,c=10,d=5] = [1,2];
console.log(a,b,c,d);  //1,2,10,5

6.默认值也可以是函数,函数有返回值打印返回值,没有返回值打印undefined

function myFun(){
    console.log('函数');
    return 1;
}
let [a,b,c = myFun()] = [1,2];
console.log(a,b,c);

2.对象解构

1.

let {name,age} = {name:'zs',age:12};
console.log(name,age);
-------------------------------------
//如果变量名和属性名不一致,需要重命名
let {name:username,age:userage} = {name:'zs',age:12};
console.log(username,userage);

2.嵌套解构

let obj = {x:['hello',{y:'world'}]};
let {x:[a,{y:b}]} = obj;
console.log(a,b);

3.默认值解构

let {name,age,gender='nv'} = {name:'zs',age:12,gender:'nan'};
console.log(name,age,gender);

3.字符串、数值number、boolean值解构

let [a,b,c,d,e] = 'hello';
console.log(a,b,c,d,e);

//字符串转数组
let [...arr] = 'hello';
console.log(arr);

//对象解构字符串原型中的方法和属性
let {length,toString} = 'hello';
console.log(length,toString);

//number/boolean只能使用{}解构,不能使用[]解构
let {toString,valueOf} = 10;
console.log(toString,valueOf);
let {valueOf} = true;

2-对象

ES6中规定可以直接在对象中写入变量和函数作为对象的属性和方法,此时属性名为变量名, 属性值为变量的值。

1.简写

let name = "zs";
let obj = {
    name,
    sayName() {}
}

2.API拓展

Object.is(a,b)     判断a,b两个值是否一样,类似于 ===
Object.assign() 深复制或者合并对象
Object.assign(obj1, obj2) 深复制,将obj2复制给obj1
Object.assign(obj1, obj2, obj3) 对象合并,将obj1、obj2合并后复制给obj1
Object.setPrototypeOf(obj1, obj2)  为目标对象设置原型,将obj2设置成obj1的原型
Object.getPrototypeOf()  获取目标对象的原型
Object.keys()     返回对象属性名组成的数组
Object.values()   返回对象属性值组成的数组
Object.entries()  返回对象[属性名, 属性值]组成的二维数组

3-数组

API拓展

Array.from()  将其他类型数据转成数组
Array.of()    创建数组实例,实参就是数组的元素
Array.prototype.find() 返回满足条件的第一个元素,参数为函数
Array.prototype.findIndex() 返回满足条件的第一个元素的索引,参数为函数
Array.prototype.includes()  判断当前数组中是否包含某个元素,参数为元素,返回true/false
Array.prototype.fill()      填充数组(所有元素填充),修改数组原值
Array.prototype.keys()      索引的迭代器对象
Array.prototype.values()    元素的迭代器对象
Array.prototype.entries()   键值对的迭代器对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值