一、let、const命令
①块级作用域
②不存在变量提升
③暂时性死区(只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响,在代码块内,使用let命令声明变量之前,该变量都是不可用的)
④不允许在相同作用域内,重复声明同一个变量
⑤全局变量不再与顶层对象挂钩
const 不能修改变量的本质:
全局变量不再与顶层对象挂钩
跨模块常量
必须是严格模式下
二、解构赋值
数组的解构赋值
对应位置
解构不成功 默认值都是undefined
不完全解构
指定默认值 如果指定了默认值 赋值的时候给了个undefined 那么undefined不会覆盖默认值
对象的解构赋值,可以用来解决对象的引用问题
函数的参数也可以解构赋值
解构赋值的用途:
3. 字符串的扩展
①模板字符串
②字符串可以用for of 来遍历
③新增字符串方法
replageAll() 方法
4. 函数的扩展
①函数参数可以设置默认值
②箭头函数
箭头函数不适用于对象中定义方法(且方法中使用this);不适用于绑定事件的回调方法
5. 数组的扩展
①扩展运算符:复制数组、合并数组、将字符串转为数组、
② 数组新增方法
Array.of (),数字、字符串、数组、对象、null.....
实例 at()方法,字符串、数组都可以用,支持负数索引
6.对象的扩展
①属性及方法简写
②将表达式放在中括号里定义属性
③对象的遍历
④super关键字,只能用在对象的简写方法中
⑤扩展运算符
⑥对象新增的方法
Object.is()
Object.assign() 用于合并对象
可用于浅拷贝
为对象添加属性
为对象添加方法
克隆对象
合并多个对象
为属性指定默认值
Object.setPrototypeOf
Object.keys()、Object.values()、Object.entries()
Object.fromEntries()
Object.hasOwn()
7. 类
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之前调用
子类无法继承父类的私有属性和私有方法
静态属性和静态方法也会继承(浅拷贝)
super关键字
类的
7.3 类的注意事项
类的name属性