常用的ES6方法和特性整理

1. let和const

let:用于声明变量
const:用来定义不可改变的常量

let和var声明变量的区别:
  1. let不存在变量提升现象
  2. let存在块级作用域
  3. let声明之后必须赋值
  4. 全局变量声明时与顶层属性分离
2. 数组方法
filter

该方法创建一个新数组,新数组中返回符合条件的所有元素。
在这里插入图片描述

forEach

该方法遍历每一个元素并为其执行方法。
在这里插入图片描述

map

该方法返回一个新数组,数组内元素为原始数组元素执行方法后的映射。
在这里插入图片描述

findIndex

该方法返回符合条件的第一个数组元素的下标。
在这里插入图片描述

Array.from

该方法将一个类数组对象或者可遍历对象(如set或map)转换为数组。

类数组对象:
对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为“类数组对象”。

3.对象方法
Object.assign

该方法将两个对象合并成一个对象,并返回目标对象。
在这里插入图片描述
假如两个对象有相同属性名,后面的将会覆盖前面的。

Object.keys

该方法返回一个对象内所有的属性组成的数组。
在这里插入图片描述

Object.value

该方法返回一个对象内所有的属性值组成的数组。
在这里插入图片描述

Object.freeze

该方法将会冻结一个对象,被冻结的对象不能被修改。
在这里插入图片描述

3.函数

ES6中引入了箭头函数,可以替代绝大多数的匿名函数。
ES5中的匿名函数:
在这里插入图片描述
使用箭头函数:
在这里插入图片描述
以上两种写法,函数运行结果是一样的。

箭头函数解决了ES5中匿名函数的this指针方向不明确的问题。
因为箭头函数没有自己的this指针,所以它将会绑定上一级的this指针。
在这里插入图片描述

不使用箭头函数的写法:
在这里插入图片描述

4.解构赋值
数组的解构赋值

在这里插入图片描述

对象的解构赋值

在这里插入图片描述

5.模板字符串

在ES5中,字符串中想拼接变量是很麻烦的:
在这里插入图片描述

在ES6中提供了用斜引号包裹起来的模板字符串,其中变量用${}括起来。
这样想用字符串拼接变量就十分方便了:
在这里插入图片描述

6.import和export
export

ES6中每一个文件可以看作为一个模块,模块中的变量、对象或函数都可以通过export关键字导出在别的文件中使用。

//导出变量
export var a=1;

//导出对象
var a={
    name:"Marcus",
    age:19
};
//一定要写花括号!
export {a};

//导出函数
function b(){
    ...
}
export{b};

//导出默认对外接口
var i=1;
export default i;
import

如果模块中使用了export导出,那么在另一个文件中可以使用import关键字导入这些被暴露的函数或对象,在当前文件中使用。

import a from ‘./test.js';
console.log(a);

注意:import和export都只能在模块的顶部出现!不然会报错!
import和export也不能出现在循环或选择语句中。

7.Set和Map
Set

Set是ES6中新的数据类型。set允许存储任意对象唯一值,无论是原始值还是引用。
Set对象是值的集合,即Set中的元素是唯一的。
在这里插入图片描述
Set最常用来进行数组去重,因为set对象类型中每个元素都是唯一的:
在这里插入图片描述

除了数组之外,字符串类型也可以变成Set对象(也可去重):
在这里插入图片描述

Map

Map是ES6中新的数据类型,Map与Object非常相像,唯一不同的是,Object中的键名只允许使用字符串,而Map中的键名可以是任意类型(包括对象)。Map提供了“值 — 值”的映射,是一种更完善的数据类型。

在这里插入图片描述

可以使用keys()和values()方法获得键名或键值。
在这里插入图片描述

8.class

许多编程语言都实现了class,js在ES6中才真正实现了class的语法糖。
在ES6还没出来之前,对象的方法是写在原型上面的:

//定义一个构造函数,把属性写到这里面
function rect(x,y){
    this.width = x ;
    this.height = y ;
}

//将方法写在该构造函数的原型上面
rect.propertype.area=function(){
    return x * y;
 }

在ES6中:

class rect {
    constructor(x,y){
        this.width = x;
        this.height = y;
        }
        
     //这里不用function关键字   
    area(){
        return x * y;
        }
  }      

class可以通过extends关键字来进行继承。

class colorRect extends rect{
    constructor(x,y,color){
    //使用super关键字来调用父类的构造函数
        super(x,y);
        this.color=color;
    }
    
    colorArea(){
        return this.color;
}

子类中必须使用super调用父类的函数才能得到与父类同样的构造函数和方法。
类的静态方法不能被实例继承,但是可以被子类继承。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值