Es6与javascript5基本区别
let const var三者区别
- let const 两者都有作用域 且没有变量提升
- var具有变量提升 可重复定义 赋值等操作
- let定义完成 不可重新定义该变量 可改变值
- const不可重复定义 且定义基本数据类型的值不可改变
箭头函数
- 与普通函数相比,箭头函数的实用性会更高
- 普通函数this指向问题比较复杂 大概分为以下几种情况
- 全局调用:指向window
- 事件源调用:指向事件源本身 例如button单击事件
- 改变this指向的方法 大概分为以下三种,三者效果一样 不同之处在于所传递的参数不同
- bind()
- apply()
- call()
基本数据类型
- javascript中有六大数据类型 分别为 String Number Boolean undefined null Object,Object中分为Array Object function
- Es6中新增symbol对象类型 该类型确定了对象的唯一性 即使两个相同的对象进行比较 结果也是false
Set Map对象
- Set类数组对象
- Set中的值具有唯一性,可用于去重
- 语法 new Set()
- Set实例的方法分为两大类:操作方法:.add()用于添加操作 .delete()用于删除操作 .has()用于判断当前有没有这个值 .clear()清除所有值;遍历方法:
.keys()
:返回键名的遍历器.values()
:返回键值的遍历器.entries()
:返回键值对的遍历器.forEach()
:使用回调函数遍历每个成员 - Set实例的结构属性:.size()获取实例的长度 .constructor()获取构造函数
- Map对象
- Map中的key值可以为任意值 在javascript中对象的key值只能为String
- 语法 new Map()
- Set实例的结构属性:.size()获取实例的长度
- Map实例的方法:.set()用于设置值 .get()用于获取值 .delete用于删除 .has用于判断
新增遍历方法
- forEach():传递的参数为一个回调函数 例如:forEach(v=>{})
- map():传递的参数为一个回调函数 配合return使用
- filter():传递的参数为回调函数 返回的是一个新数组
- some():查找有没有符合规则的数据 如果有返回true 反之
- every():查找有没有不符合规则的数据 只要有一个不符合 返回false
- find():从头开始查找 匹配一次 若无正确匹配 返回undefined
- findIndex():查找下标 正确返回该下标 查找不到 返回-1
- for...of():跟平常使用的遍历方法大致相同
解构赋值
- 解构赋值可直接按字面意思理解 首先把对象解构出来 重新赋值给对方 例如:var a = [1,2,3] var b = [...a] 打印b的结果为[1,2,3] 解构赋值可大大简化操作
扩展运算符 。。。
- 不好解释 直接上代码 例如 var [a,b,...c]=[1,2,3,4,5,6] 打印c的结果为3 4 5 6
Class 定义类
- 两大编程思想 :面向过程以及面向对象
- 面向过程:按照具体步骤一步步实现 缺点 维护起来比较麻烦 可重复性不强
- 面向对象:确定对象 确定对象所具备的功能 加以封装 三大特性 封装 继承 多态
- 语法
- class Name{} Name 为定义的类名 一般首字母大写 new Name()实现实例类
- constructor()构造函数 当你实例类时 会自动调用该函数
- 在定义的类中 需注意this指向问题
- 继承 extends
- 语法 class Son extends Father{}
- 如果需要使用父类中的方法需要在构造函数中super()