一、let、const命令
①块级作用域
②不存在变量提升
③暂时性死区(只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响,在代码块内,使用let命令声明变量之前,该变量都是不可用的)
④不允许在相同作用域内,重复声明同一个变量
⑤全局变量不再与顶层对象挂钩
const 不能修改变量的本质:
全局变量不再与顶层对象挂钩
跨模块常量
必须是严格模式下
二、解构赋值
数组的解构赋值
对应位置
解构不成功 默认值都是undefined
不完全解构
指定默认值 如果指定了默认值 赋值的时候给了个undefined 那么undefined不会覆盖默认值
对象的解构赋值,可以用来解决对象的引用问题
函数的参数也可以解构赋值
解构赋值的用途:
三、 字符串的扩展
①模板字符串
②字符串可以用for of 来遍历
③新增字符串方法
replageAll() 方法
四、 函数的扩展
①函数参数可以设置默认值
②箭头函数
箭头函数不适用于对象中定义方法(且方法中使用this);不适用于绑定事件的回调方法
五、 数组的扩展
①扩展运算符:复制数组、合并数组、将字符串转为数组、
② 数组新增方法
Array.of (),数字、字符串、数组、对象、null.....
实例 at()方法,字符串、数组都可以用,支持负数索引
六、对象的扩展
①属性及方法简写
②将表达式放在中括号里定义属性
③对象的遍历
④super关键字,只能用在对象的简写方法中
⑤扩展运算符
⑥对象新增的方法
Object.is()
Object.assign() 用于合并对象
可用于浅拷贝
为对象添加属性
为对象添加方法
克隆对象
合并多个对象
为属性指定默认值
Object.setPrototypeOf()
Object.keys()、Object.values()、Object.entries()
Object.fromEntries()
Object.hasOwn()
七、类
7.0类的原型
7.1 实例属性新写法
set 、get 关键字
static关键字定义静态方法
静态方法也可以继承
静态属性
私有属性
私有方法
in 运算符判断私有属性
静态块,用来初始化静态属性,只在类生成时运行一次
7.2 类的继承
extends 关键字,让子类继承父类,子类就能访问父类的方法了
像下面这样,子类调用父类的方法会报错,原因是1,2传给了子类,没有传给父类
要想把子类的1,2传给父类,需要使用关键字super,super(x, y)就是把x,y传给了父类
在子类中调用父类的方法,super.say()
super在子类的构造函数中,必须先于子类this之前调用
子类无法继承父类的私有属性和私有方法
静态属性和静态方法也会继承(浅拷贝)
7.3 super关键字
类的
7.4 类的注意事项
类的name属性